Unity入門

【Unity】Image・Panelの使い方 | 画像変更、色変更、alpha、sprite

UnityのImage(画像表示)Panel(UIコンテナ) は、ゲームのUIを作成する上で欠かせない要素です。また、各UIにImageコンポーネントは使用されています。

しかし、「画像をスクリプトで変更したい」「パネルを非表示にしたい」「アルファ値(透明度)を調整したい」 など、細かい制御が必要なこともあります!

この記事では、ImageとPanelの基本からスクリプト制御、カスタマイズ、よくあるエラーと対策まで を詳しく解説します!

この記事で学べること

  • UnityのImageとPanelの基本的な使い方
  • スクリプトで画像やパネルの表示・非表示を制御する方法
  • 透明度や色変更を行う方法
  • よくあるエラーと解決策

テクスチャ、動画を使用したい方はこちらを参考にしてください。

それでは、本題に入っていきましょう。

UnityのImageとPanelの使い方

Imageの基本

Imageは、ゲーム内で画像を表示するためのUIコンポーネント
ボタンの背景やアイコン、キャラクターのポートレートなどに使われる。

[Hierarchy]→[右クリック][UI] → [Image] で追加
・ ImageコンポーネントにはSpriteをセットして画像を表示
Colorで画像の透明度を変更可能

Unity Imageのコンポーネントの画像

※ Canvasについて気になる方はこちらを参考にしてください。

Panelの基本

Panelは、UIを整理するための背景コンテナ
メニュー画面やポップアップ、HUDの背景として使うことが多い。

[Hierarchy]→[右クリック] [UI] → [Panel] で追加
・ Imageと同じようにColorを設定可能
複数のUI要素をまとめることで管理しやすくなる

Unity Pannelのコンポーネントの画像

Image・Panelの設定、スクリプト制御

InspectorでImage・Panelの画像を変更(静的)

ProjectビューからSprite画像をドラッグ&ドロップをする。

Unity ImageのSource Imageの画像

スクリプトでImageの画像を変更(動的)

スクリプトのImage.spriteを変更すると画像を差し替えられる。

ボタンを押したときに画像を変更する場合などに便利
newSpriteにSpriteを設定すれば画像が切り替わる

using UnityEngine;
using UnityEngine.UI;

public class ImageExample : MonoBehaviour
{
    public Image myImage;
    public Sprite newSprite; // Inspectorでセット

    public void ChangeImage()
    {
        myImage.sprite = newSprite;
    }
}

スクリプトでPanel(Image)の表示・非表示

Panelをスクリプトで SetActive(true/false) すると、UI全体を非表示にしたり、ポップアップを制御 できる。

ボタンを押すとパネルを開閉するUIが作れる!

using UnityEngine;

public class PanelExample : MonoBehaviour
{
    public GameObject panel; // Inspectorで設定

    public void ShowPanel()
    {
        panel.SetActive(true);
    }

    public void HidePanel()
    {
        panel.SetActive(false);
    }
}

※ GameObjectではなくPanelを使用する場合は異なります。

Inspectorで色、透明度(alpha)を変更(静的)

ImageやPanelのColor.aを変更すると、透明度を調整可能。

Unity Imageの色、透明度のパラメータの画像

・ SetTransparency(0.5f); と呼び出せば50%透明になる
・ Imageを徐々にフェードさせるエフェクトにも応用可能

スクリプトで色、透明度(alpha)を変更(動的)

色を変更

myImage.color = Color.red; // 赤に変更
myImage.color = new Color(0.5f, 0.5f, 1f, 0.8f); // RGBA指定(青・80%透明)

透明度(alpha)を変更

using UnityEngine;
using UnityEngine.UI;

public class ImageExample : MonoBehaviour
{
    public Image myImage;

    public void SetTransparency(float alpha)
    {
        Color color = myImage.color;
        color.a = alpha; // 0 = 完全透明, 1 = 完全表示
        myImage.color = color;
    }
}

よくあるエラーと解決策

Image が変更されない

myImage.sprite = newSprite; の newSprite に Sprite をセットしているか確認
SetActive(false) にしていると変更が適用されないことがあるので、一度 SetActive(true) にする


Image の透明度が変わらない

Color.a を変更したあとに myImage.color = color; をセットしているか確認
CanvasGroup を使うとスムーズにフェードできる

CanvasGroup canvasGroup = myImage.GetComponent<CanvasGroup>();
canvasGroup.alpha = 0.5f; // 50% 透明

Panel の開閉が動作しない

Panel の SetActive(false) にしていると、スクリプトから変更できない可能性がある
Inspector で Panel のオブジェクトが panel に正しくセットされているか確認

まとめ

Image はスプライト画像を表示するためのUIコンポーネント
Panel はUIを整理するための背景コンテナとして使う
スクリプトで画像を変更するには Image.sprite = newSprite; を使う
パネルの表示・非表示は SetActive(true/false); で制御可能
透明度を変更するには Image.color.a を変更