在 Unity 开发中,PropertyAttribute 是用来修饰字段、在 Inspector 面板上实现可视化布局、校验、功能增强的特性(Attribute),最常用的就是 [Header]

我给你整理了 Unity 内置、无需插件、开箱即用 的全部常用 PropertyAttribute,按功能分类,直接复制就能用,非常实用。

一、标题 / 分组 / 布局类(最常用)

这些用来让 Inspector 面板更清晰、分组更直观。

1. [Header("标题")]

给字段上方加一个加粗标题,用于分组。

[Header("玩家设置")]
public int hp;

2. [Space] / [Space(间距)]

在字段之间增加空行间距

public int a;
[Space] // 默认空一行
[Space(20)] // 空20像素
public int b;

3. [Tooltip("提示文字")]

鼠标悬停在字段上时显示提示信息

[Tooltip("玩家最大生命值,不能超过100")]
public int maxHp;

4. [Separator]

画一条分隔线(部分 Unity 版本自带)。


二、数值范围 / 限制类

强制限制数值输入范围,防止填错。

5. [Range(最小值, 最大值)]

把数字变成滑动条,并限制范围。

[Range(0, 100)]
public int speed;

6. [Min(最小值)]

限制数值不能小于某个值

[Min(0)]
public float damage;

三、控件显示 / 隐藏类

控制字段在 Inspector 上的显示样式。

7. [HideInInspector]

公开变量但不在面板显示

[HideInInspector]
public int id;

8. [SerializeField]

私有变量显示在面板(超级常用)。

[SerializeField]
private int level;

9. [NonSerialized]

公开变量但不序列化、不显示


四、文本 / 多行输入类

10. [TextArea(最小行, 最大行)]

把字符串变成多行文本框

[TextArea(2, 5)]
public string description;

11. [Multiline]

简单多行文本(无滚动条)。


五、引用 / 资源管理类

12. [RequireComponent(typeof(组件))]

强制挂载依赖组件(加在类上)。

[RequireComponent(typeof(Rigidbody))]
public class Player : MonoBehaviour

13. [ContextMenu("菜单名")]

在脚本右上角右键执行方法

[ContextMenu("重置血量")]
void ResetHP() => hp = 100;

六、高级内置特性(编辑器增强)

14. [ColorUsage]

颜色选择器(支持 HDR、Alpha)。

15. [GradientUsage]

渐变编辑器。

16. [Delayed]

输入完数值按回车才生效,防止拖动时频繁刷新。


七、最常用组合示例(直接复制用)

[Header("战斗属性")]
[Space(10)]

[Tooltip("角色最大生命值")]
[Range(10, 200)]
public int maxHp;

[Space]

[TextArea(2, 4)]
public string skillDesc;

[SerializeField]
private float attack;

总结:最常用的 7 个

如果你只想记最实用的,就这 7 个足够 90% 场景:

  1. [Header] —— 标题分组
  2. [Space] —— 间距
  3. [Tooltip] —— 提示
  4. [Range] —— 滑动条
  5. [SerializeField] —— 私有变量显示
  6. [HideInInspector] —— 隐藏公开变量
  7. [TextArea] —— 多行文本