千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Unity怎么预定义UI?8个预定义UI实现教程

Unity怎么预定义UI?8个预定义UI实现教程

来源:千锋教育
发布人:syq
时间: 2022-07-21 14:57:00 1658386620

  大家好!经常会有同学问“Unity怎么预定义UI?”今天给大家带来不写GUIEditor就能实现的预定义UI。

Unity怎么预定义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) = 1ZWriteMode是没有内置的,实际上也只有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时:

3

  当值为10时:

4

  PowerSlider值类似曲线的控制值,值越大,小值的范围越好调整,值越小,大值的可调整范围越大。

  更多关于“Unity培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT