はじめに
スクリプトから画像を差し替える方法を紹介します。2Dの脱出ゲームでは頻繁に画像を切り替える必要が出てくるので、参考にしてみてください。
オーソドックスな方法と、もっと簡単にした方法を紹介します。
画像の変更方法
Imageコンポーネントを取得し、画像を切り替えます。
以下のコードは、スペースキーが押された時に、画像をnewSpriteに切り替える例です。
using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
public Sprite newSprite;
private Image image;
void Start()
{
// SpriteRendererコンポーネントを取得します
image = GetComponent<Image>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// 画像を切り替えます
image.sprite = newSprite;
}
}
}
このスクリプトを画像のゲームオブジェクトにアタッチして、newSpriteに切り替えたい画像をドラッグ&ドロップします。
スペースキーを押すと部屋の画像に切り替わるようになりました。
方法2 ゲームオブジェクトのアクティブを切り替える
オブジェクトの取得が面倒くさい!
切り替える画像サイズが同じ場合は、簡単な方法があります。
Imageコンポーネントをいちいち取得するのが面倒な人もいると思います。
画像のゲームオブジェクトを複数用意しておいて、アクティブ状態を切り替えることで画像を変更する方法です。
まず、Imageを複数用意しておきます。Hierarchyの下にあるほど、先頭に表示されます。
それぞれのImageに別々の画像を設定しておきます。
試しに一番下の画像を非表示にすると、一つ上の画像が見えるようになります。
Image(2)を非表示にすると、Image(1)が前面に表示されます。
このようにゲームオブジェクトのアクティブを切り替えることで、画像が切り替わって見えます。
おわりに
SpriteRendere.spriteプロパティを変更するというのが一般的ですが、面倒くさがりな私はアクティブ/非アクティブで画像を切り替えていることが多いです。