Unity│SpriteおよびRawImage 画像を読み込む方法

Unityで画像を動的に読み込む方法を紹介します。

Inspector指定、Resourcesフォルダ、ネットワーク取得の3パターンを解説します。

目次

方法1:Inspectorで指定したSprite画像に変更する

あらかじめInspectorで画像をアサインしておき、スクリプトから差し替える方法です。

手順

  1. GameObject → UI → Imageを作成
  2. 以下のスクリプトを作成してImageにアタッチ
  3. Inspectorで表示されるSpriteフィールドに画像をアサイン
  4. 再生するとImageの画像が変更される
using UnityEngine;
using UnityEngine.UI;

public class ChangeSprite : MonoBehaviour
{
    [SerializeField] private Sprite newSprite;
    
    void Start()
    {
        GetComponent<Image>().sprite = newSprite;
    }
}

ポイント

  • [SerializeField]を使うとprivateでもInspectorに表示できる
  • スクリプトはImageコンポーネントに直接アタッチする
  • GameObject.Find()で探すと処理が重いので避ける

方法2:Resourcesフォルダから読み込む

Resourcesフォルダに配置した画像をスクリプトから読み込む方法です。

準備

  1. Assets直下にResourcesフォルダを作成
  2. Resourcesフォルダ内にスプライト画像を配置

スクリプト

using UnityEngine;
using UnityEngine.UI;

public class LoadSpriteFromResources : MonoBehaviour
{
    void Start()
    {
        Sprite loadedSprite = Resources.Load<Sprite>("profile");
        GetComponent<Image>().sprite = loadedSprite;
    }
}

ファイル名から拡張子を除いた名前を指定します。

サブフォルダがある場合はResources.Load<Sprite>("Folder/FileName")のようにパスを指定します。

方法3:ネットワークから画像を取得する(RawImage)

外部URLから画像をダウンロードして表示する場合はRawImageを使います。

手順

  1. GameObject → UI → Raw Imageを作成
  2. 以下のスクリプトをRawImageにアタッチ
  3. 再生するとURLから画像を取得して表示
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;

public class GetNetworkImage : MonoBehaviour
{
    [SerializeField] private string url = "https://example.com/image.png";
    
    private RawImage rawImage;

    IEnumerator Start()
    {
        rawImage = GetComponent<RawImage>();
        
        using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(url))
        {
            yield return request.SendWebRequest();
            
            if (request.result == UnityWebRequest.Result.Success)
            {
                Texture2D texture = DownloadHandlerTexture.GetContent(request);
                rawImage.texture = texture;
                rawImage.SetNativeSize(); // 画像の元サイズで表示
            }
            else
            {
                Debug.LogError("画像の取得に失敗: " + request.error);
            }
        }
    }
}

コード解説

コード説明
IEnumerator Start()コルーチンを使用するための型指定
UnityWebRequestTexture.GetTexture()テクスチャ取得用のリクエストを作成
yield return request.SendWebRequest()ダウンロード完了まで待機
SetNativeSize()画像の元サイズでRawImageを表示

※WWWクラスは非推奨になったため、UnityWebRequestを使用しています。

ImageとRawImageの違い

項目ImageRawImage
使用するテクスチャSpriteTexture
Sprite Atlasとの連携×
ネットワーク画像△(変換が必要)
描画パフォーマンス良いやや劣る
主な用途通常のUI画像動的に取得する画像

まとめ

方法用途
Inspector指定あらかじめ用意した画像を切り替える
Resources.Loadビルドに含めた画像を動的に読み込む
UnityWebRequest + RawImage外部URLから画像を取得する

通常のUI画像にはImageを使い、ネットワークから取得する画像にはRawImageを使うのが基本です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次