Unity IMGUI 文件筆記
文件原文:https://docs.unity3d.com/cn/2020.1/Manual/GUIScriptingGuide.html
IMGUI :即時模式 GUI
用途:
1、建立遊戲內除錯顯示和工具。(在每幀都會呼叫的 OnGUI() 中使用)
2、為指令碼元件建立自定義檢視皮膚。
3、建立新的編輯器視窗和工具以擴充套件 Unity 本身。
一、IMGUI 基礎知識
GUI 控制元件宣告
關鍵:Type (Position, Content)。
1、Type:指 Control Type(控制元件型別),通常為 GUI 或 GUILayout 類中的函式。
2、Position:所有 GUI 控制元件函式中的第一個引數。型別為 Rect(int, int, int, int),含義:最左側位置、最頂部位置、總寬度、總高度。均為螢幕空間下的畫素值(螢幕寬高:Screen.width、Screen.height)。
3、Content:GUI 控制元件函式中的必要引數。型別為 string、Texture、GUIContent等(由具體控制元件決定),含義:要在控制元件上顯示的內容和tooltip。
舉例:GUI.Button (new Rect (10,10,200,20), "Meet the flashing button")
二、GUI 控制元件型別
1、GUI.Label
2、GUI.Button
3、GUI.RepeatButton
4、GUI.TextField
5、GUI.TextArea
6、GUI.Toggle
7、GUI.Toolbar
8、GUI.SelectionGrid
9、GUI.HorizontalSlider
10、GUI.VerticalSlider
11、GUI.HorizontalScrollbar
12、GUI.VerticalScrollbar
13、GUI.BeginScrollView + GUI.EndScrollView
14、GUI.Window
------------------------------
15、GUI.changed GUI 中執行了任何操作時返回true
三、使用 GUIStyle 自定義控制元件
1、GUIStyle 旨在模仿 Web 瀏覽器的層疊樣式表 (CSS):分離內容和外觀。
2、所有 GUI 控制元件函式都有可選的最後一個引數:用於顯示控制元件的 GUIStyle。若忽略,則會使用 Unity 預設的 GUIStyle。
3、可將 GUIStyle 作為變數顯示在Inspector上進行編輯。
4、GUIStyle 的屬性可以動態更改。
四、GUISkin
1、GUISkin 是 GUIStyle 的集合,當有大量不同的 GUIStyle 可供使用時,可在單個 GUISkin 中定義這些樣式。
2、建立 GUISkin: 選單欄中選擇 Assets > Create > GUI Skin。
3、應用 GUISkin 至全域性:GUI.skin = customSkin。
五、IMGUI 固定佈局模式
1、可以使用 GUI.BeginGroup + GUI.EndGroup 定義包含多個控制元件的螢幕區域。
2、Group內的所有控制元件將根據Group的左上角而不是螢幕的左上角進行定位。
3、Group可以巢狀。
六、IMGUI 自動佈局模式
1、自動佈局模式在建立時不需要 Rect() 引數。控制元件將自動放置在包含控制元件的Area或螢幕的最左上角。
2、可以使用 GUILayout.BeginArea + GUILayout.EndArea 定義有限空間的Area來包含多個控制元件。
3、Area中的可見控制元件會將寬度拉伸到該Area的整個長度。
4、可以使用 GUILayout.BeginHorizontal() + GUILayout.EndHorizontal() 定義水平組。水平組內的所有控制元件都將始終採用水平佈局方式。
5、可以使用 GUILayout.BeginVertical() + GUILayout.EndVertical() 定義垂直組。垂直組內的所有控制元件都將始終採用垂直佈局方式。
6、垂直組和水平組可以巢狀使用,以實現複雜的排列需求。(重點在於自頂向下分解區域)。
7、建立空間或組時,可以使用 GUILayoutOption 覆蓋某些自動佈局引數。 GUILayoutOption是以下函式的返回值:
GUILayout.Width(float) 固定寬度
GUILayout.MaxWidth(float) 最大寬度
GUILayout.MinWidth(float) 最小寬度
GUILayout.ExpandWidth(bool) 是否擴充套件寬度
GUILayout.Height(float) 固定高度
GUILayout.MaxHeight(float) 最大高度
GUILayout.MinHeight(float) 最小高度
GUILayout.ExpandHeight(bool) 是否擴充套件高度
*** 兩種佈局模式可以混用
七、擴充套件 IMGUI(類似製作預設,但是包裝在方法中)
1、複合控制元件:即將(二)中的基本控制元件進行組合。同時顯示、封裝內部排列和互動。
2、可將複合控制元件統一整理至一個靜態類中,方便各處複用。
相關文章
- unity學習筆記(三)Unity筆記
- unity學習筆記(一)Unity筆記
- Unity學習筆記--入門Unity筆記
- InnoDB文件筆記(一)筆記
- Unity Shader 入門精要 筆記(1)Unity筆記
- Unity Application Block 1.2 學習筆記UnityAPPBloC筆記
- 《webpack文件》學習筆記Web筆記
- Unity3D學習筆記3——Unity Shader的初步使用Unity3D筆記
- Unity3D筆記五 快捷鍵Unity3D筆記
- Unity 熱更--AssetBundle學習筆記 0.7Unity筆記
- Unity 熱更--AssetBundle學習筆記 0.8Unity筆記
- unity學習筆記-C#協程Unity筆記C#
- IMGUI快速入門GUI
- InnoDB文件筆記(二)—— Redo Log筆記
- InnoDB文件筆記(三)—— Undo Log筆記
- UNITY官方文件:事件函式Unity事件函式
- React Router文件閱讀筆記(上)React筆記
- Unity+C#開發筆記(九)| unity連線Excel攏共分幾步| ╭(●`∀´●)╯╰(●’◡’●)╮UnityC#筆記Excel
- SpringBoot文件之IO的閱讀筆記Spring Boot筆記
- SpringBoot文件之Web的閱讀筆記Spring BootWeb筆記
- SpringBoot文件之Developing的閱讀筆記Spring Bootdev筆記
- SpringBoot文件之SpringApplication的閱讀筆記Spring BootAPP筆記
- SpringBoot文件之Profiles的閱讀筆記Spring Boot筆記
- 【筆記】jQuery原始碼(文件處理3)筆記jQuery原始碼
- 技術筆記(10)Unity編輯器擴充套件筆記Unity套件
- ES 筆記三十二:文件分散式儲存筆記分散式
- SpringBoot文件之入門的閱讀筆記Spring Boot筆記
- SpringBoot文件之Externalized Configuration的閱讀筆記Spring BootZed筆記
- Unity學習筆記--資料持久化之PlayerPrefs的使用Unity筆記持久化
- flask文件學習筆記1-快速入門Flask筆記
- ES 筆記四十三:文件的父子關係筆記
- ES 筆記四:文件的基本 CRUD 與批量操作筆記
- 筆記三:基本概念-文件、索引和 REST API筆記索引RESTAPI
- Libev 官方文件學習筆記 – 03:常用 watcher 介面筆記
- Libevent 官方文件學習筆記(2. bufferevent部分)筆記
- SpringBoot文件之構建包的閱讀筆記Spring Boot筆記
- SpringBoot文件之Build Tool Plugins的閱讀筆記Spring BootUIPlugin筆記
- Unity3D學習筆記4——建立Mesh高階介面Unity3D筆記