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