1、防止重命名后旧变量aaa所关联的引用丢失
[FormerlySerializedAs("aaa")]
public string bbb;
2、一般用于创建组件使用,防止一个对象上多次挂载同一组件
[DisallowMultipleComponent]
3、代表该类在运行模式和编辑模式下都会运行
[ExecuteAlways]
4、强制unity序列化一个私有的或者保护的属性,在Inspector面板中可见,public变量默认是可以被序列化的,因此可认为凡是显示在Inspector中的属性都具有序列化功能
[SerializeField] Attribute
5、标记可序列化类的某个字段不允许被序列化
[NonSerialized]
6、标记下面的字段值以分页按钮显示
[EnumToggleButtons]
7、分组显示
[BoxGroup("Member referencing")]
public string DynamicFilePath;
[BoxGroup("Member referencing")]
public string DynamicParent = "Assets/Plugin/Sirenix";
[BoxGroup("Member referencing")]
public string DynamicExtensions = "cs, unity, jpg";
8、标签、颜色、枚举等类型字段的说明
[Header("背景颜色")]
public Color backgroundValue = new Color(0, 0, 0, 0.7f);
9、折页
[FoldoutGroup("设置窗口")]
[Header("是否打开")]
public bool isOpen = false;
[FoldoutGroup("设置窗口")]
[Header("是否关闭")]
public bool isClose = false;
[FoldoutGroup("设置窗口")]
[Header("是否初始化")]
public bool isInit = false;
10、当属性值发生变化时回调函数,如ValueChange即为回调函数
[OnValueChanged("ValueChange")]
11、向左向右箭头
[EnumPaging]
[Header("窗口显示层级")]
public UIViewPosition UILayer = UIViewPosition.Normal;
12、当指定条件满足时,显示对应的属性,默认传入的参数为对应属性的名称,如果为True或者不为null时,显示属性,或者指定一个选项值,当指定的属性与这个值拼配时,显示属性, 也可以使用@特殊符号写入表达式,其表达式的值作为实参
[ShowIf("playEvent", OnPlayEvent.Click)]
[ShowIf("@this.IsToggled && this.SomeObject != null || this.SomeEnum == InfoMessageType.Error")]
public Vector3 HideWhenNull;
13、表示取值范围
[Header("时间")]
[ProgressBar(0, 20)]
public float time;
14、在默认分组上以一个tab标示一个属性
[TabGroup("UI1")]
[TabGroup("UI2")]
[TabGroup("UI3")]
[TabGroup("UI4")]
15、对List和Array使用TableList属性标签,可以在面板中以表的形式进行绘制
[TableList]
16、创建一个属性的下拉菜单
[ValueDropdown("texs")]