即時モード (Immediate Mode) の GUI システム (IMGUI) は、ゲームオブジェクトベースの Unity の主要 UI システムから独立した機能です。IMGUI はコードで制御される GUI システムで、主にプログラマー用のツールです。IMGUI は、任意のスクリプトで実装する ****OnGUI**** 関数を呼び出すことによって制御されます。以下はその例です。
void OnGUI() {
if (GUILayout.Button("Press Me"))
Debug.Log("Hello!");
}
上記のコードは、下のようなボタンになります。
IMGUI は、一般に以下の用途で使用されます。
The IMGUI system is not generally intended to be used for normal in-game user interfaces that players might use and interact with. For that you should use Unity’s main GameObject-based UI system, which offers a GameObject-based approach for editing and positioning UI elements, and has far better tools to work with the visual design and layout of the UI.
“Immediate Mode” は IMGUI を作成して描画する方法を示唆しています。IMGUI の要素を作成するためには、OnGUI という名前の特別な関数を呼び出すコードを作成する必要があります。インターフェースを表示するためのコードはすべてのフレームで実行され、画面に描画されます。OnGUI コードが付加されたオブジェクトか、階層内の描画されたビジュアル要素と関連する他のタイプのオブジェクト以外に、永続的なゲームオブジェクトは存在しません。
IMGUI により、多様な機能を備えた GUI をコードを使って作成することが可能になります。ゲームオブジェクトを作成して手動で配置し、その機能を処理するスクリプトを作る代わりに、このすべてを数行のコードで一度に行えます。コードは、一度の関数呼び出しで描画され処理される GUI コントロール を可能にします。
このセクションでは、ゲーム内と Unity エディター拡張機能の両方の面で IMGUI の使い方を説明します。