【Unity初心者向け解説】ゲーム中にスクリプトから画像imageを変更する方法

Unityでゲームを作っていると、こんなことをやりたくなる瞬間はありませんか?

  • ボタンを押したらキャラクターの画像を切り替えたい
  • スコアが一定以上になったら背景を変更したい
  • 設定画面でアイコンをユーザーが変更できるようにしたい

この記事では、Unity初心者の方でも理解できるように「画像切り替えの基本」を、ステップごとにわかりやすく解説します。

PR

画像をスクリプトから変更する方法はいくつかある

Unityでは、UIの画像やゲームオブジェクトの見た目を変える方法が複数あります。大きく分けると次のようなパターンがあります。

  1. UIのImageコンポーネントのSpriteを切り替える(最も基本的な方法)
  2. 複数の画像を配列にして順番に切り替える(ボタンでスライドショーなど)
  3. オブジェクトのアクティブ切り替えで画像を見せ替える

それぞれの方法を「初心者向けの解説」+「サンプルコード」で紹介していきます。

PR

基本中の基本:Image.spriteを使った差し替え

UIのImageコンポーネントを持つオブジェクトの画像は、Image.sprite に新しいSpriteを代入するだけで差し替えられます。

以下のコードは、スペースキーが押された時に、画像を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に切り替えたい画像をドラッグ&ドロップします。

スペースキーを押すと部屋の画像に切り替わるようになりました。

ポイント

  • image に差し替えたい対象のImageコンポーネントを割り当てる
  • newSprite に差し替え先のSpriteを登録しておく
  • image.sprite = newSprite; と書くだけで切り替え完了

初心者の方でも、まずはこの方法から覚えるのがおすすめです。

PR

複数の画像を順番に差し替える(スライドショー風)

ゲーム中に「ボタンを押すたびに次の画像へ切り替えたい」ことも多いですよね。
その場合は、画像を配列にまとめて、順番に取り出す方法が便利です。

using UnityEngine;
using UnityEngine.UI;

public class ChangeScript : MonoBehaviour
{
    [SerializeField] Image image;
    [SerializeField] Sprite[] sprites;
    int index = 0;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            index = (index + 1) % sprites.Length;
            image.sprite = sprites[index];
            image.SetNativeSize();  // 元サイズにリセット
        }
    }
}

こちらのスクリプトを適当なオブジェクトに追加して、変更したいImageオブジェクトと、画像を設定します。

実行すると、スペースを押すたびに画像が切り替わります。ちなみにここで使われている画像はChatGPTで生成しました。

活用例

  • キャラクターの表情を差し替える
  • スライドショーを作る
  • 複数のアイコンを切り替える
PR

ゲームオブジェクトのアクティブを切り替える

オブジェクトの取得が面倒くさい!

切り替える画像サイズが同じ場合は、簡単な方法があります。

Imageコンポーネントをいちいち取得するのが面倒な人もいると思います。

画像のゲームオブジェクトを複数用意しておいて、アクティブ状態を切り替えることで画像を変更する方法です。

まず、Imageを複数用意しておきます。Hierarchyの下にあるほど、先頭に表示されます。

それぞれのImageに別々の画像を設定しておきます。

試しに一番下の画像を非表示にすると、一つ上の画像が見えるようになります。

Image(2)を非表示にすると、Image(1)が前面に表示されます。

このようにゲームオブジェクトのアクティブを切り替えることで、画像が切り替わって見えます。

👉 向いている場面

  • 小規模なプロジェクト
  • 画像の数が少ないとき

👉 デメリット

  • オブジェクトが増えると管理が大変になる
PR

まとめ:初心者はまず「Image.spriteの差し替え」から!

Unityで画像を差し替える方法はたくさんありますが、初心者はまず「Image.spriteを使った差し替え」をマスターしましょう。

ただ、面倒くさがりな私はアクティブ/非アクティブで画像を切り替えていることが多いです。

画像のフェードインなどアニメーションを作成したい場合は、DOTweenを使うのが便利です。