Version: 2019.3
言語: 日本語
画面遷移の作成
IMGUI の基本

IMGUI (即時モードの GUI)

即時モード (Immediate Mode) の GUI システム (IMGUI) は、ゲームオブジェクトベースの Unity の主要 UI システムから独立した機能です。IMGUI はコードで制御される GUI システムで、主にプログラマー用のツールです。IMGUI は、任意のスクリプトで実装する OnGUI 関数を呼び出すことによって制御されます。以下はその例です。

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

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

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

IMGUI は、一般に以下の用途で使用されます。

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

IMGUI システムは通常、プレイヤーが操作するゲーム内のユーザーインターフェースに使うことを目的としていません。それらを行うにはゲームオブジェクトベースの Unity の主要 UI システム を使用します。UI システムは UI 要素の編集と配置にゲームオブジェクトベースのアプローチが可能で、ビジュアルデザインと UI のレイアウトをするためにより便利なツールを備えています。

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

IMGUI により、多様な機能を備えた GUI をコードを使って作成することが可能になります。ゲームオブジェクトを作成して手動で配置し、その機能を処理するスクリプトを作る代わりに、このすべてを数行のコードで一度に行えます。コードは、一度の関数呼び出しで描画され処理される GUI コントロール を可能にします。

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

画面遷移の作成
IMGUI の基本