画面遷移の作成
IMGUI の基本

Immediate Mode GUI (IMGUI)

Immediate Mode の GUI システム (IMGUI と呼ぶ) は、ゲームオブジェクトベースで作られた、Unity のメイン UI システムのための完全に分離した機能です。 IMGUI はコードドリヴンな GUI システムであり、プログラマのためのツールとなる事が意図されています。使用するための何らかのスクリプトから ****OnGUI**** 機能を呼ぶ事で、実行されます。例えば、このようなコードです。

    void OnGUI() {
            if (GUILayout.Button("Press Me"))
                Debug.Log("Hello!");
        }

上記のコードは、以下のようなボタンになります。

前述のコードで作成されたボタン
前述のコードで作成されたボタン

Immediate Mode GUI システムは、一般に以下の用途で使用されます。

  • ゲーム内のデバッグ表示とツールの作成
  • スクリプトコンポーネント用のカスタムインスペクターの作成
  • Unity そのものを拡張する新しいエディターウインドウとツールの作成

IMGUI システムは通常、プレイヤーが操作する普通のゲーム内ユーザーインターフェイスに使う事は意図されていません。それらにはゲームオブジェクトベースで考えられた Unity のメイン UI system を使ってください。そちらの方が UI 要素の編集と位置決めにゲームオブジェクトベースでアプローチでき、 UI のレイアウトと視覚デザインをするのにはより便利なツールです。

“Immediate Mode” は IMGUI が作成して描画する方法を指します。 IMGUI の要素を作成するためには、 OnGUI という名前の特別なファンクションでコードを書く必要があります。インターフェイスを表示するためのコードはフレーム毎に実行され、画面に描画されます。 OnGUI コードが付加されたオブジェクトか、描画された視覚的な要素と関連する、階層内の他のタイプのオブジェクト以外に、永続的なゲームオブジェクトは存在しません。

IMGUI により、機能を備えた多様な GUI を非常に素早く、簡単に作成できます。ゲームオブジェクトを作成して手動で配置し、その機能を処理するスクリプトを記述する代わりに、このすべてを数行のコードで一度に行います。これは、GUI controls のインスタンス化、配置、定義、のすべてを一度の関数呼び出しで行います。

このセクションでは、ゲーム内と Unity エディター拡張機能の両方の IMGUI を使用する方法について説明します。

画面遷移の作成
IMGUI の基本