Hello,大家好,有人問“Unity如何預定義UI?”今天給大家帶來不寫GUIEditor就能實現的預定義UI,我是麥田。
1、寫在前麵
出於性能原因,EditorGUILayout 函數不能與 MaterialPropertyDrawers 一起使用。
2、Enum類(枚舉)
枚舉,最多可指定 7 個名稱。常用的枚舉類如下。
當然也可以自定義枚舉,可以通過KeyWrod來控製。
混合模式
[Enum(UnityEngine.Rendering.BlendOp)] _BlendOp ("BlendOp", Float) = 0
[Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Float) = 1
[Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Float) = 0
深度開關
[Enum(Off, 0, On, 1)]_ZWriteMode ("ZWriteMode", float) = 1
ZWriteMode是沒有內置的,實際上也隻有on和off兩個狀態,所以用Toogle其實也可以,我這裏是直接用[Enum(Off, 0, On, 1)]這樣的寫法聲明了個新的自定義Enum
剔除模式
[Enum(UnityEngine.Rendering.CullMode)]_CullMode ("CullMode", float) = 2
深度測試
[Enum(UnityEngine.Rendering.CompareFunction)]_ZTestMode ("ZTestMode", Float) = 4
顏色通道寫入遮罩
[Enum(UnityEngine.Rendering.ColorWriteMask)]_ColorMask ("ColorMask", Float) = 15
[Enum(UnityEngine.Rendering.CompareFunction)]_StencilComp ("Stencil Comparison", Float) = 8
[Enum(UnityEngine.Rendering.StencilOp)]_StencilPass ("Stencil Pass", Float) = 0
[Enum(UnityEngine.Rendering.StencilOp)]_StencilFail ("Stencil Fail", Float) = 0
[Enum(UnityEngine.Rendering.StencilOp)]_StencilZFail ("Stencil ZFail", Float) = 0
3、IntRange
顯示一個適用於 Range 著色器屬性的整數滑動條。
[IntRange]_StencilWriteMask ("Stencil Write Mask", Range(0,255)) = 255
[IntRange]_StencilReadMask ("Stencil Read Mask", Range(0,255)) = 255
[IntRange]_Stencil ("Stencil ID", Range(0,255)) = 0
4、Header
顯示一個頭部名稱。
[Header()]
[Header(A group of things)] _Prop1 ("Prop1", Float) = 0
不支持漢字,數字以及大部分符號
在著色器屬性之前創建一個標題文本。
5、Space
在著色器屬性之前創建垂直空間。
[Space] _Prop1 ("Prop1", Float) = 0
[Space(50)] _Prop2 ("Prop2", Float) = 0
6、KeywordEnum
關鍵字枚舉,並啟用相應的著色器關鍵字。它可在著色器中與“#pragma multi_compile”配合使用,以啟用或禁用部分著色器代碼。每個名稱都將 采用“屬性名”+ 下劃線 +“枚舉名”這種形式的大寫著色器關鍵字。最多可提供 9 個名稱。
[KeywordEnum(None, Add, Multiply)] _Overlay ("Overlay mode", Float) = 0
#pragma multi_compile _OVERLAY_NONE _OVERLAY_ADD _OVERLAY_MULTIPLY
7、Toggle類(開關)
以開關形式顯示浮點值。屬性值為 0 或 1,具體取決於開關狀態。當開關處於打開狀態時,將設置一個帶有大寫屬性名稱 +“_ON” 的著色器關鍵字,或者一個顯式指定的著色器關鍵字。
[Toggle] _Invert ("Invert?", Float) = 0
[Toggle(ENABLE_FANCY)] _Fancy ("Fancy?", Float) = 0
8、PowerSlider
[PowerSlider(3.0)] _Shininess ("Shininess", Range (0.01, 1)) = 0.08
顯示一個具有對應於 Range 著色器屬性的非線性響應的滑動條。意思就是,讓Range滑杆更加方便調整細微的值。以[PowerSlider(1.0)]為分界,當值為1.0時,效果與range一致。當值<1.0時,值越大可調整的範圍越大。當值>1.0時,值越小可調整的範圍越大。可以更精細地在這些區間進行微調。
當值為0.1時

當值為10時

PowerSlider值類似曲線的控製值,值越大,小值的範圍越好調整,值越小,大值的可調整範圍越大。
下一篇 U3D引擎如何批量自動創建文件夾
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答杭州室內設計師培訓班有哪些已成為許多設計愛好者進入創意領域的理想起點。在杭州這座設計之都,室內設計行業蓬勃發展,帶動了培訓需求......
在視覺內容主導傳播的當下,掌握專業的視頻剪輯技能,已成為眾多求職者和職場人士提升競爭力的關鍵路徑。麵對日益增長的市場需求,石家......
在數字媒體蓬勃發展的當下,影視後期製作是創意產業的核心驅動力。湛江,這座濱海城市,文化底蘊獨特,區位優勢明顯,影視行業正快速崛......
濟南UI設計培訓正成為越來越多人的職業起點。在這個數字時代,界麵設計需求激增,濟南作為一座文化底蘊深厚的城市,為學習者提供了豐......
柳州UI設計培訓避坑指南:開啟你的創意職業之旅
荊州平麵設計培訓在當今數字化浪潮中扮演著關鍵角色。隨著品牌營銷和視覺傳達需求的激增,專業設計師成為各行各業的熱門人才。然而,選......
同學您好!