定义材质的可调节属性
语法
声明属性
Properties {
[Attribute][...] _Name ("显示名称", Type) = 默认值
}
绑定变量
对应类型 _Name;Type
数据类型。仅是暴露到编辑器中的类型,实际类型要看着色器源码对该变量的定义
| Type(类型) | 语法示例 | 解释 |
|---|---|---|
| Int | _Int("Name", Int) = 2 |
整数类型,用于声明整数值属性。 |
| Float | _Float("Name", Float) = 1.5 |
浮点数类型,用于声明浮点数值属性。 |
| Range (Min, Max) | _Range("Name", Range(0,1)) = 0.5 |
范围类型,声明一个在最小值和最大值之间的浮点数(滑动条)。 |
| Color | _Color("Name", Color) = (1,1,1,1) |
颜色类型,声明一个RGBA颜色(支持颜色拾取器)。 |
| Vector | _Vector("Name", Vector) = (0,0,0,0) |
向量类型,声明一个4分量向量属性。 |
| 2D Texture | _2D("Name", 2D) = "white" {} |
2D纹理类型,默认值可以是内置名称(如white/black)或自定义纹理。 |
| Cube Texture | _Cube("Name", Cube) = "white" {} |
立方体贴图纹理类型,用于天空盒等。 |
| 3D Texture | _3D("Name", 3D) = "black" {} |
3D纹理类型,用于体积纹理(需手动生成或加载)。 |
Attribute
元数据标签,用于向 Unity 编辑器提供有关该属性如何显示或行为的额外信息
Header
在Inspector中添加分组标题(仅用于UI组织)
[Header(标题文字)]
Space
在Inspector中添加垂直间距(默认10像素)
[Space(高度像素值)]
Toggle
将浮点数属性转换为复选框,并关联一个Shader关键字(KEYWORD)
[Toggle(KEYWORD)] _Bool("Name", Float) = 0
IntRange
将 Range 类型的浮点数属性转换为 整数滑动条,限制输入值为整数
[IntRange] _Level("LOD Level", Range(0, 10)) = 5
PowerSlider
将 Range 类型的属性转换为 非线性滑动条(基于指数曲线),适合需要非线性调节的参数(如光照衰减、指数级变化)
[PowerSlider(3.0)] _Roughness("Roughness", Range(0.01, 1)) = 0.5
- 在Inspector中,滑动条的拖拽会按
x^Exponent的曲线响应(如0.1附近更敏感)
Enum
将浮点数属性转换为下拉枚举菜单
[Enum(选项列表)] _Mode("Mode", Float) = 0
HDR
标记颜色属性为高动态范围(HDR)
[HDR] _Color("HDR Color", Color)
Gamma
标记浮点数/颜色属性为Gamma空间(Unity会自动进行sRGB转换)
[Gamma] _Float("Gamma", Float)
NoScaleOffset
隐藏UV的Tiling/Offset
[NoScaleOffset] _2D("Tex", 2D)
Normal
标记纹理属性为法线贴图(Unity会进行额外验证)
[Normal] _Bump("Normal", 2D)
PerRendererData
表示该属性由 Renderer 动态提供(例如通过 MaterialPropertyBlock 设置、UI等),避免保存到材质实例中。
[PerRendererData] _Color("Color", Color)