PR

Unityパスから画像を取得する方法

はじめに

UnityはSystem.IOのFile.ReadAllBytesを使用することによってパスが取得できます。
今回はFile.ReadAllBytesを使用してパスから画像を読み込む方法について解説していきます。

その1.スクリプトを記述

まずスクリプトを作成して、using UnityEngine;の下にusing System.IO;を追加してください。

C#
using UnityEngine;
using System.IO;//これを追加してください

次にパスを読み込むための下のコードを入力してください。

C#
    public static Sprite ConvertPathToSprite(string path)
    {
        Sprite sprite = null;

        if (File.Exists(path))
        {
            byte[] bytes = File.ReadAllBytes(path);
            Texture2D tex = new Texture2D(1, 1);
            tex.LoadImage(bytes);
            sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
        }
        return sprite;
    }

その2.動作確認

次にパスから画像が読み取れるか試してみましょう。
画像を表示させるためにシーンにキャンバスと画像を配置してください。

using System.IO;の下にusing UnityEngine.UI;を追加してください。

C#
using UnityEngine;
using System.IO;
using UnityEngine.UI;//これを追加してください

次に二つのメンバーを記述してください。

C#
    /// <summary>
    /// 読み取り先のパス
    /// </summary>
    public string TestPath;

    /// <summary>
    /// 読み取られた画像の表示先
    /// </summary>
    public Image TestImage;

スタート関数に下のスクリプトを記述してください。
このスクリプトでパスから画像を取得する関数を呼び出します。

C#
TestImage.sprite = ConvertPathToSprite(TestPath);

スクリプト全体は以下の通りです。

C#
using UnityEngine;
using System.IO;
using UnityEngine.UI;

public class ImageTest : MonoBehaviour
{

    /// <summary>
    /// 読み取り先のパス
    /// </summary>
    public string TestPath;

    /// <summary>
    /// 読み取られた画像の表示先
    /// </summary>
    public Image TestImage;

    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
        TestImage.sprite = ConvertPathToSprite(TestPath);
    }

    public static Sprite ConvertPathToSprite(string path)
    {
        Sprite sprite = null;

        if (File.Exists(path))
        {
            byte[] bytes = File.ReadAllBytes(path);
            Texture2D tex = new Texture2D(1, 1);
            tex.LoadImage(bytes);
            sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
        }
        return sprite;
    }

}

Canvasに先ほど作成したスクリプトをドラッグアンドドロップしてください。
スクリプトの項目にTestPathとあるのでここに読み込みたいパスを入力してください。
パスの最後は必ず読み込む画像ファイルの拡張子を入れてください(.png,.jpeg)など。

次にTestImageの項目に読み込まれた後に表示させるImageをアタッチしてください。

実行してみてください。
実行すると読み込まれていると思います。
もし読み込まれていない場合はパスが間違っている可能性があるので、確認をお願いします。

最後に

今回はUnityパスから画像を取得する方法について紹介しました。

ここまで読んでいただいてありがとうございました。
私たちはプペポタイピングという自由に問題やテーマを作ったり遊んだりできるゲームを
開発しています!
もし興味を持って頂けたのであれば遊んで頂けるとありがたいです