Odin Attributes 为Unity开发者提供了更多的自定义选项,使得开发过程更加高效和愉悦。通过使用这些特性,开发者可以创建更加专业和用户友好的编辑器界面,从而提升整个开发团队的工作效率。
Delayed Property 特性:字段或属性在 Inspector 中编辑时,使用此特性会延迟序列化。 类似于 Unity 内置的 Delayed 特性,但此特性也可以应用于属性。
即时序列化(非延迟)
[OnValueChanged("ValueChangeCallBack")]
public int field;
[ShowInInspector]
[OnValueChanged("ValueChangeCallBack")]
public string property { get; set; }
public void ValueChangeCallBack()
{
Debug.Log("数值有变化");
}
延时序列化
// Delayed 和 DelayedProperty 实际上是相同的
[Delayed]
[OnValueChanged ("ValueChangeCallBack")]
public int delayedField;
// 但是,正如名称所示,DelayedProperty 应用于属性。
[ShowInInspector, DelayedProperty]
[OnValueChanged("ValueChangeCallBack")]
public string delayedProperty { get; set; }
public void ValueChangeCallBack()
{
Debug.Log("数值有变化");
}
完整示例代码
using Sirenix.OdinInspector;
using UnityEngine;
public class DelayedPropertyExample : MonoBehaviour
{
[OnValueChanged("ValueChangeCallBack")]
public int field;
[ShowInInspector]
[OnValueChanged("ValueChangeCallBack")]
public string property { get; set; }
// Delayed 和 DelayedProperty 实际上是相同的
[Delayed]
[OnValueChanged ("ValueChangeCallBack")]
public int delayedField;
// 但是,正如名称所示,DelayedProperty 应用于属性。
[ShowInInspector, DelayedProperty]
[OnValueChanged("ValueChangeCallBack")]
public string delayedProperty { get; set; }
public void ValueChangeCallBack()
{
Debug.Log("数值有变化");
}
}