Unity的PropertyAttribute有哪些?
在 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% 场景:
[Header]—— 标题分组[Space]—— 间距[Tooltip]—— 提示[Range]—— 滑动条[SerializeField]—— 私有变量显示[HideInInspector]—— 隐藏公开变量[TextArea]—— 多行文本