Hide If Group Attribute允許根據條件顯示或隱藏一組屬性。該屬性是組屬性,因此可以與其他組屬性組合,甚至可以用于顯示或隱藏整個組
有組準定有層級,先說單層級,指定的名稱既是組的名稱,也是對應屬性的名稱,如果指定的屬性的值為true或者不為null,則隱藏對應的組
public bool Toggle = true;
[HideIfGroup("Toggle")]
[BoxGroup("Toggle/Shown Box")]
public int A, B;
多層級的情況下,組最后的名稱為指定屬性的名稱
[BoxGroup("Box")]
public InfoMessageType EnumField = InfoMessageType.Info;
[BoxGroup("Box")]
[HideIfGroup("Box/Toggle")]
public Vector3 X, Y;
也可以特別指定屬性的名稱
//要在隱藏組時使用的成員的名稱。默認為組的名稱,
//可以通過設置此屬性來覆蓋。
[ShowIfGroup("RectGroup", MemberName = "Toggle")]
public Rect Rect;
可以設置與指定屬性的匹配值,如果匹配,則顯示
//與常規if屬性一樣,HideIfGroup也支持指定值。
//您還可以將多個HideIfGroup屬性鏈接在一起,以實現更復雜的行為。
[HideIfGroup("Box/Toggle/EnumField", Value = InfoMessageType.Info)]
[BoxGroup("Box/Toggle/EnumField/Border", ShowLabel = true)]
public string Name;
完整示例代碼
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HideIfGroupAttributeExample : MonoBehaviour
{
public bool Toggle = true;
[HideIfGroup("Toggle")]
[BoxGroup("Toggle/Shown Box")]
public int A, B;
[BoxGroup("Box")]
public InfoMessageType EnumField = InfoMessageType.Info;
[BoxGroup("Box")]
[HideIfGroup("Box/Toggle")]
public Vector3 X, Y;
//與常規if屬性一樣,HideIfGroup也支持指定值。
//您還可以將多個HideIfGroup屬性鏈接在一起,以實現更復雜的行為。
[HideIfGroup("Box/Toggle/EnumField", Value = InfoMessageType.Info)]
[BoxGroup("Box/Toggle/EnumField/Border", ShowLabel = true)]
public string Name;
[BoxGroup("Box/Toggle/EnumField/Border")]
public Vector3 Vector;
//要在隱藏組時使用的成員的名稱。默認為組的名稱,
//可以通過設置此屬性來覆蓋。
[ShowIfGroup("RectGroup", MemberName = "Toggle")]
public Rect Rect;
}