即時モード (Immediate Mode) の GUI システム (IMGUI) は、ゲームオブジェクトベースの Unity の主要 UI システムから独立した機能です。IMGUI はコードで制御される GUI システムで、主にプログラマー用のツールです。IMGUI は、任意のスクリプトで実装する ****OnGUI**** 関数を呼び出すことによって制御されます。以下はその例です。
void OnGUI() {
if (GUILayout.Button("Press Me"))
Debug.Log("Hello!");
}
上記のコードは、下のようなボタンになります。
IMGUI は、一般に以下の用途で使用されます。
IMGUI システムは通常、プレイヤーが使用して操作するゲーム内のユーザーインターフェースに使用されることを目的としていません。ユーザーインターフェースに使用するには、ゲームオブジェクトベースの Unity の主要 UI システム を使用します。この UI システムは UI 要素の編集と配置にゲームオブジェクトベースのアプローチが可能で、ビジュアルデザインと UI のレイアウトを行うためのより優れたツールを備えています。
“Immediate Mode” は IMGUI を作成して描画する方法を示唆しています。IMGUI の要素を作成するためには、OnGUI という名前の特別な関数を呼び出すコードを作成する必要があります。インターフェースを表示するためのコードはすべてのフレームで実行され、画面に描画されます。OnGUI コードが付加されたオブジェクトか、階層内の描画されたビジュアル要素と関連する他のタイプのオブジェクト以外に、永続的なゲームオブジェクトは存在しません。
IMGUI により、多様な機能を備えた GUI をコードを使って作成することが可能になります。ゲームオブジェクトを作成して手動で配置し、その機能を処理するスクリプトを作る代わりに、このすべてを数行のコードで一度に行えます。コードは、一度の関数呼び出しで描画され処理される GUI コントロール を可能にします。
このセクションでは、ゲーム内と Unity エディター拡張機能の両方の面で IMGUI の使い方を説明します。