Show If Attribute用于任何屬性,并且可以在檢查器中隱藏該屬性。使用此選項可根據(jù)對象的當前狀態(tài)隱藏不相關的屬性。

這個特性的效果主要是當指定條件滿足時,顯示對應的屬性,默認傳入的參數(shù)為對應屬性的名稱,如果為True或者不為null時,顯示屬性
[ShowIf("IsToggled")]
public Vector2 VisibleWhenToggled;
還以指定一個選項值,當指定的屬性與這個值拼配時,顯示屬性
[ShowIf("SomeEnum", InfoMessageType.Info)]
public Vector3 Info;
[ShowIf("SomeEnum", InfoMessageType.Warning)]
public Vector2 Warning;
[ShowIf("SomeEnum", InfoMessageType.Error)]
public Vector3 Error;
可以使用@特殊符號寫入表達式,其表達式的值作為實參
[ShowIf("@this.IsToggled && this.SomeObject != null || this.SomeEnum == InfoMessageType.Error")]
public Vector3 HideWhenNull;
完整示例代碼
using Sirenix.OdinInspector;
using UnityEngine;
public class ShowIfAttributeExample : MonoBehaviour
{
public UnityEngine.Object SomeObject;
[EnumToggleButtons]
public InfoMessageType SomeEnum;
public bool IsToggled;
[ShowIf("SomeEnum", InfoMessageType.Info)]
public Vector3 Info;
[ShowIf("SomeEnum", InfoMessageType.Warning)]
public Vector2 Warning;
[ShowIf("SomeEnum", InfoMessageType.Error)]
public Vector3 Error;
[ShowIf("IsToggled")]
public Vector2 VisibleWhenToggled;
[ShowIf("@this.IsToggled && this.SomeObject != null || this.SomeEnum == InfoMessageType.Error")]
public Vector3 HideWhenNull;
}