Unity

【Unity】Image・Panelの使い方を徹底解説

この記事について

この記事は私がゲーム制作・学習等で学んだ知識を元にImage・Panelの使い方をわかりやすく説明していきます。
※PanelはImageコンポーネントを元に作られているため、本記事ではまとめて説明していきます。

この記事で学べること

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

Imageとは?

Image は 画像を表示するためのUIコンポーネント です。
Canvas の子要素に置くことで、画面上にスプライト(Sprite)や色付き矩形を表示できます。

主な用途

  • ゲームの背景画像
  • ボタンのアイコン
  • ステータスUIのアイコン
  • シンプルな図形(四角・丸・スライス)

Panelとは?

Panel は UIの背景やグループ化に使うコンポーネント です。
実際には Imageコンポーネント付きの四角いUI要素 のこと。

主な用途

  • メニューやウィンドウの背景
  • ボタンやテキストをまとめる「入れ物」
  • 半透明のオーバーレイ(暗転演出など)

UnityのImageとPanelの使い方

Imageの基本

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

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

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

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の画像を切り替える制御については以下を参考にしてください。

スクリプトで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)を変更(動的)

Imageの色、透明度のスクリプト制御については以下を参考にしてください。

Image・Panelの大きさを変更

Image・Panelは特に大きさに意識することが多いかと思います。そこで、スクリプトで大きさを制御する方法をまとめましたので、以下を参考にしてください。

Mask・RectMask2Dについて

Image・Panelでは特にMaskを使用することで演出の幅が広がります。そこでスクリプトで制御する方法をまとめましたので、以下のサイトを参考にしてください。

Fill・FillAmountについて

Image・Panelでは特にFillも使用することで演出の幅が広がります。体力バーやスタミナバーは主にこれで作ることができるので参考にしてください。

よくあるエラーと解決策

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 を変更