Disable If Attribute:用于任何屬性扔亥,并且可以在檢查器中啟用或禁用該屬性挂签。相關(guān)屬性時(shí),使用此選項(xiàng)可禁用屬性凯力。
這個(gè)特性的效果主要是當(dāng)指定條件滿足時(shí)茵瘾,灰態(tài)對(duì)應(yīng)的屬性,默認(rèn)傳入的參數(shù)為對(duì)應(yīng)屬性的名稱咐鹤,如果為True或者不為null時(shí)拗秘,灰態(tài)對(duì)應(yīng)屬性
//默認(rèn)判斷bool或者是否為null 為null則是false
[DisableIf("IsToggled")]
public int DisableIfToggled;
[DisableIf("SomeObject")]
public Vector3 EnabledWhenNull;
還以指定一個(gè)選項(xiàng)值,當(dāng)指定的屬性與這個(gè)值拼配時(shí)祈惶,顯示屬性
//指定的屬性的值是否與給定的值一致雕旨,如果結(jié)果為true,則灰態(tài)對(duì)應(yīng)的屬性
[DisableIf("SomeEnum", InfoMessageType.Info)]
public Vector2 Info;
[DisableIf("SomeEnum", InfoMessageType.Error)]
public Vector2 Error;
[DisableIf("SomeEnum", InfoMessageType.Warning)]
public Vector2 Warning;
可以使用@特殊符號(hào)寫入表達(dá)式捧请,其表達(dá)式的值作為實(shí)參
[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;
//指定的屬性的值是否與給定的值一致凡涩,如果結(jié)果為true,則灰態(tài)對(duì)應(yīng)的屬性
[DisableIf("SomeEnum", InfoMessageType.Info)]
public Vector2 Info;
[DisableIf("SomeEnum", InfoMessageType.Error)]
public Vector2 Error;
[DisableIf("SomeEnum", InfoMessageType.Warning)]
public Vector2 Warning;
//默認(rèn)判斷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;
}