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設計行業在北京展......
在當今創意經濟蓬勃發展的浪潮中,北京平麵設計培訓成為眾多職業追求者的理想起點。這座城市的活力與機遇吸引著無數人投身視覺藝術領域......
在影視和設計行業蓬勃發展的今天,虛幻引擎作為核心技術工具,正引領著視覺創作的革命。越來越多的人渴望掌握這門技能,而專業的培訓成......
在北京這座文化創意中心,平麵設計培訓行業蓬勃發展,為渴望入行的學員提供了豐富機遇。隨著數字媒體和影視產業的崛起,掌握視覺傳達技......
在上海這座充滿活力的城市,影視和設計行業正迎來前所未有的發展機遇,數字技術的進步讓3D建模成為創意產業的核心驅動力。參加專業的......
同學您好!