當前位置:首頁 >教程首頁 > 遊戲程序 > Unity3D遊戲開發工程師班 >Unity如何預定義UI?

Unity如何預定義UI?

發布時間:2022-05-09 10:41:25

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時

1.jpg

當值為10時

2.jpg

PowerSlider值類似曲線的控製值,值越大,小值的範圍越好調整,值越小,大值的可調整範圍越大。

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答

微信掃碼入群領福利

掃碼領福利最新AI資訊

點擊谘詢
添加老師微信,馬上領取免費課程資源

1. 打開微信掃一掃,掃描左側二維碼

2. 添加老師微信,馬上領取免費課程資源

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定