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引擎如何批量自動創建文件夾
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答這篇文章詳細介紹了如何學習使用UE4進行可視化製作,以及火星時代教育對此方麵培訓的專業性
麵對繁多的移動端UI培訓機構,如何選擇一個適合自己的呢? 本文將為你解答疑問,而火星時代教育,我們敢說是最好的選擇!
基於火星時代教育的高質量課程體驗, 揭示遊戲開發的前瞻性和職業發展前景。
以UE4作為工具來建構智慧城市,能大大提高其實用性和創新性。火星時代教育通過專業的UE4課程培訓來助力學習者掌握UE4建構智慧城市的技巧。
對於很多熱愛製作遊戲特效的朋友來說,擔心的一個問題就是,學習遊戲特效需要多少時間?火星時代教育為您詳細分析和解答。
了解影視原畫設計的基本知識和學習路徑,尤其是在火星時代教育的專業指導下,你將擁有更好的學習體驗。
1. 打開微信掃一掃,掃描左側二維碼
2. 添加老師微信,馬上領取免費課程資源
同學您好!