Version: Unity 6.0 (6000.0)
言語 : 日本語
Unity UI
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 のレイアウトをするためにより便利なツールを備えています。

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

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

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

Unity UI
IMGUI の基本