Disable If Attribute:用于任何屬性,并且可以在檢查器中啟用或禁用該屬性。相關屬性時,使用此選項可禁用屬性。
這個特性的效果主要是當指定條件滿足時,灰態對應的屬性,默認傳入的參數為對應屬性的名稱,如果為True或者不為null時,灰態對應屬性
//默認判斷bool或者是否為null 為null則是false
[DisableIf("IsToggled")]
public int DisableIfToggled;
[DisableIf("SomeObject")]
public Vector3 EnabledWhenNull;
還以指定一個選項值,當指定的屬性與這個值拼配時,顯示屬性
//指定的屬性的值是否與給定的值一致,如果結果為true,則灰態對應的屬性
[DisableIf("SomeEnum", InfoMessageType.Info)]
public Vector2 Info;
[DisableIf("SomeEnum", InfoMessageType.Error)]
public Vector2 Error;
[DisableIf("SomeEnum", InfoMessageType.Warning)]
public Vector2 Warning;
可以使用@特殊符號寫入表達式,其表達式的值作為實參
[DisableIf("@this.IsToggled && this.SomeObject != null || this.SomeEnum == InfoMessageType.Error")]
public int DisableWithExpression;
完整示例代碼
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DisableIfAttributeExample : MonoBehaviour
{
public UnityEngine.Object SomeObject;
[EnumToggleButtons]
public InfoMessageType SomeEnum;
public bool IsToggled;
//指定的屬性的值是否與給定的值一致,如果結果為true,則灰態對應的屬性
[DisableIf("SomeEnum", InfoMessageType.Info)]
public Vector2 Info;
[DisableIf("SomeEnum", InfoMessageType.Error)]
public Vector2 Error;
[DisableIf("SomeEnum", InfoMessageType.Warning)]
public Vector2 Warning;
//默認判斷bool或者是否為null 為null則是false
[DisableIf("IsToggled")]
public int DisableIfToggled;
[DisableIf("SomeObject")]
public Vector3 EnabledWhenNull;
[DisableIf("@this.IsToggled && this.SomeObject != null || this.SomeEnum == InfoMessageType.Error")]
public int DisableWithExpression;
}