MRが楽しい

MRやVRについて学習したことを書き残す

UnityでRawImageコンポーネントを利用して動的に表示中の画像データを差し替える

本日は Unity の小ネタ枠です。
Unity で RawImage コンポーネントを利用して動的に表示中の画像データを差し替える方法についてです。

RawImage

RawImage コンポーネントは画像を表示するコンポーネントです。
Image コンポーネントと異なり、サイズを自動で画像に合わせて変更するなどの機能を持っていませんが、テクスチャの参照を直接差し替えることができる特徴があります。
このため、Sprite での差し替えが必要な Image コンポーネントと異なり、シーン内でインターネットからダウンロードした画像をそのまま差し替えて表示することなどが可能です。
docs.unity3d.com
docs.unity3d.com

サンプルコード

RawImage コンポーネントを使ってスクリプトから画像を差し替えるサンプルコードです。
以下の通り、RawImage コンポーネントでは texture 変数の参照を直接差し替えることで表示する画像を変更できます。
・TextureRawImageTest.cs

using UnityEngine;
using UnityEngine.UI;

public class TextureRawImageTest : MonoBehaviour
{
    [SerializeField]
    private Texture2D assetTexture;

    [SerializeField]
    private RawImage targetImage;
    
    void Start()
    {
        targetImage.texture = assetTexture;
    }
}


Image コンポーネントの場合は mainTexture 変数が setter を持たないため、画像を直接差し替えることはできません。
あらかじめ用意した Sprite を差し替える必要があります。
・TextureRawImageTest.cs

using UnityEngine;
using UnityEngine.UI;

public class TextureImageTest : MonoBehaviour
{
    [SerializeField]
    private Texture2D assetTexture;

    [SerializeField]
    private Image targetImage;
    
    void Start()
    {
        // Setterは持たないため、画像は直接変更できない
        //targetImage.mainTexture = assetTexture;

        // あらかじめ用意した Sprite を差し替える形になる
        targetImage.sprite = assetSprite;
    }
}