UnityTips:参数面板后面的{}和属性标签

在声明变量的时候,后面默认参数会加一个{},这其实是以前的属性标签的旧语法,现在已经废弃了,但为了向旧版本兼容所有留下来了,保持空白就行。不写也能编译过的

1
2
3
4
 Properties
    {
        _MainTex ("MainTex", 2D) = "white" {}
    }

属性标签

以下是 Unity ShaderLab 中常用的属性标签(Property Attributes),按功能分类:

📦 纹理相关

标签 说明 示例
[MainTexture] 标记为主纹理,Material.mainTexture 会自动引用 [MainTexture] _BaseMap
[MainColor] 标记为主颜色,Material.color 会自动引用 [MainColor] _BaseColor
[NoScaleOffset] 隐藏纹理的缩放和偏移控件 [NoScaleOffset] _MainTex
[Normal] 标记为法线贴图 [Normal] _BumpMap
[PerRendererData] 纹理数据来自每个渲染器(如 SpriteRenderer) [PerRendererData] _MainTex

🎨 颜色相关

标签 说明 示例
[HDR] 高动态范围颜色(显示拾色器) [HDR] _EmissionColor
[Gamma] 标记颜色/浮点数为 Gamma 空间(sRGB) [Gamma] _Color

🔢 数值范围与类型

标签 说明 示例
[IntRange] 整数范围滑块 [IntRange] _Quality
[PowerSlider] 指数曲线滑块 [PowerSlider(3.0)] _Smoothness
[Enum] 自定义枚举下拉菜单 [Enum(Off,0,On,1)] _Mode
[KeywordEnum] 为每个选项生成 Shader Keyword [KeywordEnum(None,Add,Multiply)] _Blend
[Toggle] 开关(生成 property name_ON keyword) [Toggle] _USE_FEATURE
[ToggleUI] 开关(不生成 keyword,仅 UI) [ToggleUI] _Advanced

📐 UI 布局

标签 说明 示例
[Space] 添加垂直间距 [Space]
[Space(20)] 添加指定高度的间距 [Space(20)]
[Header] 添加分组标题 [Header(Main Settings)]

⚙️ 高级控制

标签 说明 示例
[HideInInspector] 在 Inspector 中隐藏 [HideInInspector] _Internal
[NonModifiableTextureData] 纹理不可修改(只读) [NonModifiableTextureData] _LUT

📊 向量分量控制

标签 说明 示例
[Vector2] 限制为 2 分量向量 [Vector2] _Tiling
[Vector3] 限制为 3 分量向量 [Vector3] _Position

🔄 特殊用途

标签 说明 适用版本
[Curve] 曲线编辑器(用于 float 属性) Unity 2020+
[Gradient] 渐变编辑器(需要自定义绘制) 需自定义

📝 综合使用示例以下是 Unity ShaderLab 中常用的属性标签(Property Attributes),按功能分类:

📦 纹理相关

标签 说明 示例
[MainTexture] 标记为主纹理,Material.mainTexture 会自动引用 [MainTexture] _BaseMap
[MainColor] 标记为主颜色,Material.color 会自动引用 [MainColor] _BaseColor
[NoScaleOffset] 隐藏纹理的缩放和偏移控件 [NoScaleOffset] _MainTex
[Normal] 标记为法线贴图 [Normal] _BumpMap
[PerRendererData] 纹理数据来自每个渲染器(如 SpriteRenderer) [PerRendererData] _MainTex

🎨 颜色相关

标签 说明 示例
[HDR] 高动态范围颜色(显示拾色器) [HDR] _EmissionColor
[Gamma] 标记颜色/浮点数为 Gamma 空间(sRGB) [Gamma] _Color

🔢 数值范围与类型

标签 说明 示例
[IntRange] 整数范围滑块 [IntRange] _Quality
[PowerSlider] 指数曲线滑块 [PowerSlider(3.0)] _Smoothness
[Enum] 自定义枚举下拉菜单 [Enum(Off,0,On,1)] _Mode
[KeywordEnum] 为每个选项生成 Shader Keyword [KeywordEnum(None,Add,Multiply)] _Blend
[Toggle] 开关(生成 property name_ON keyword) [Toggle] _USE_FEATURE
[ToggleUI] 开关(不生成 keyword,仅 UI) [ToggleUI] _Advanced

📐 UI 布局

标签 说明 示例
[Space] 添加垂直间距 [Space]
[Space(20)] 添加指定高度的间距 [Space(20)]
[Header] 添加分组标题 [Header(Main Settings)]

⚙️ 高级控制

标签 说明 示例
[HideInInspector] 在 Inspector 中隐藏 [HideInInspector] _Internal
[NonModifiableTextureData] 纹理不可修改(只读) [NonModifiableTextureData] _LUT

📊 向量分量控制

标签 说明 示例
[Vector2] 限制为 2 分量向量 [Vector2] _Tiling
[Vector3] 限制为 3 分量向量 [Vector3] _Position

🔄 特殊用途

标签 说明 适用版本
[Curve] 曲线编辑器(用于 float 属性) Unity 2020+
[Gradient] 渐变编辑器(需要自定义绘制) 需自定义

📝 综合使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Properties {
    // ========== 标题和间距 ==========
    [Header(Main Settings)]
    [Space(10)]
    
    // 主纹理和颜色(会被 Material.mainTexture/color 引用)
    [MainTexture] [NoScaleOffset] _BaseMap ("Albedo", 2D) = "white" {}
    [MainColor] _BaseColor ("Color", Color) = (1,1,1,1)
    
    [Space]
    [Header(Normal and Height)]
    
    // 法线贴图
    [Normal] _BumpMap ("Normal Map", 2D) = "bump" {}
    
    // 开关控制
    [Toggle(_PARALLAXMAP)] _UseParallax ("Use Parallax", Float) = 0
    
    [Space(15)]
    [Header(Effects)]
    
    // HDR 颜色
    [HDR] _EmissionColor ("Emission", Color) = (0,0,0,1)
    
    // 指数滑块
    [PowerSlider(3.0)] _Smoothness ("Smoothness", Range(0,1)) = 0.5
    
    // 枚举下拉
    [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("Src Blend", Float) = 1
    [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("Dst Blend", Float) = 0
    
    // 关键字枚举(会生成多个 Shader Variant)
    [KeywordEnum(None, Add, Multiply, Screen)] _BlendMode ("Blend Mode", Float) = 0
    
    [Space]
    [Header(Advanced)]
    
    // 内部变量(不显示)
    [HideInInspector] _Internal ("", Float) = 0
    
    // 每渲染器数据
    [PerRendererData] _RendererColor ("Renderer Color", Color) = (1,1,1,1)
}



    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • URP - RendererFeature :ScreenSpaceOutline
  • 平滑法线处理 - 八面体映射
  • Lv.3 Unity主线:一个简单的PBRShader
  • 理论支线:直接光漫反射与GGX高光的混合问题
  • 理论支线:PBR - 基于图像的照明( image based lighting-IBL)
  • # #