Immediate Mode の GUI システム (IMGUIと呼ぶ) は、ゲームオブジェクトベースで作られた、Unity のメイン UI システムのための完全に分離した機能です。 IMGUI はコードドリヴンな GUI システムであり、プログラマのためのツールとなる事が意図されています。使用するための何らかのスクリプトから OnGUI 機能を呼ぶ事で、実行されます。例えば、このようなコードです。
void OnGUI() {
if (GUILayout.Button("Press Me"))
Debug.Log("Hello!");
}
上記のコードは、以下のようなボタンになります。
Immediate Mode GUI システムは、一般に以下の用途で使用されます。
IMGUI システムは通常、プレイヤーが操作する普通のゲーム内ユーザーインターフェイスに使う事は意図されていません。それらにはゲームオブジェクトベースで考えられた Unity のメイン UI system を使ってください。そちらの方が UI 要素の編集と位置決めにゲームオブジェクトベースでアプローチでき、 UI のレイアウトと視覚デザインをするのにはより便利なツールです。
“Immediate Mode” は IMGUI が作成して描画する方法を指します。 IMGUI の要素を作成するためには、 OnGUI という名前の特別なファンクションでコードを書く必要があります。インターフェイスを表示するためのコードはフレーム毎に実行され、画面に描画されます。 OnGUI コードが付加されたオブジェクトか、描画された視覚的な要素と関連する、階層内の他のタイプのオブジェクト以外に、永続的なゲームオブジェクトは存在しません。
IMGUI により、機能を備えた多様な GUI を非常に素早く、簡単に作成できます。ゲームオブジェクトを作成して手動で配置し、その機能を処理するスクリプトを記述する代わりに、このすべてを数行のコードで一度に行います。これは、GUI controls のインスタンス化、配置、定義、のすべてを一度の関数呼び出しで行います。
このセクションでは、ゲーム内と Unity エディター拡張機能の両方の IMGUI を使用する方法について説明します。