UGUI-即時模式 GUI (IMGUI)
“即時模式”GUI 系統(tǒng)(也稱為 IMGUI)是一個完全獨立的功能系統(tǒng),不同于 Unity 基于游戲?qū)ο蟮闹?UI 系統(tǒng)。IMGUI 是一個代碼驅(qū)動的 GUI 系統(tǒng),主要用作程序員的工具。為了驅(qū)動該系統(tǒng),需在實現(xiàn)腳本上調(diào)用?OnGUI?函數(shù)。例如,以下代碼:
void OnGUI() { ? ? ? ? ? ?
if (GUILayout.Button("Press Me")) ? ? ? ? ? ? ? ?
Debug.Log("Hello!"); ? ? ? ?
}
將顯示如下所示的按鈕:

即時模式 GUI 系統(tǒng)常用于:
創(chuàng)建游戲內(nèi)調(diào)試顯示和工具。
為腳本組件創(chuàng)建自定義檢視面板。
創(chuàng)建新的編輯器窗口和工具以擴展 Unity 本身。
IMGUI 系統(tǒng)通常不適合用于玩家可能使用和交互的普通游戲內(nèi)用戶界面。對于此類用途,應(yīng)使用 Unity 基于游戲?qū)ο蟮闹?UI 系統(tǒng),因為該系統(tǒng)提供了基于游戲?qū)ο蟮木庉嫼投ㄎ?UI 元素的方法,并有更好的工具可用于處理 UI 的可視化設(shè)計和布局。
“立即模式”指的是創(chuàng)建和繪制 IMGUI 的方式。要創(chuàng)建 IMGUI 元素,必須編寫進入名為 OnGUI 的特殊函數(shù)的代碼。顯示界面的代碼將在每幀執(zhí)行,并繪制到屏幕上。除了 OnGUI 代碼附加到的對象,或者層級視圖中與繪制的可視元素相關(guān)的其他類型對象之外,沒有其他持久性游戲?qū)ο蟆?/p>
IMGUI 允許使用代碼創(chuàng)建各種功能 GUI。通過該系統(tǒng),無需創(chuàng)建游戲?qū)ο?,手動定位這些對象,然后編寫一個處理對象功能的腳本,而只需幾行代碼即可立即執(zhí)行所有操作。該代碼將生成通過單個函數(shù)調(diào)用進行繪制和處理的?GUI 控件。
本部分將介紹如何在游戲和 Unity Editor 的擴展中使用 IMGUI。