ToggleGroup用于任何字段,并創(chuàng)建一組可切換的選項。使用此選項可以創(chuàng)建可以啟用或禁用的選項。
【ToggleGroup】 通過制定一個返回bool值得成員名來控制toggle的開關(guān) ,默認以成員的名稱作為標題顯示
注意:此bool 成員不能為static
[ToggleGroup("MyToggle")]
public bool MyToggle;
[ToggleGroup("MyToggle")]
public float A;
[ToggleGroup("MyToggle")]
[HideLabel, Multiline]
public string B;
也可以以制定toggle group的標題,或者通過$特殊標識符引用一個成員的值作為標題
[ToggleGroup("EnableGroupOne", "$GroupOneTitle")]
public bool EnableGroupOne = true;
[ToggleGroup("EnableGroupOne")]
public string GroupOneTitle = "One";
[ToggleGroup("EnableGroupOne")]
public float GroupOneA;
[ToggleGroup("EnableGroupOne")]
public float GroupOneB;
如果制定的toggle為class結(jié)構(gòu),需要添加Serializable特性,toggle標題默認為此類的名稱,且繼承關(guān)系的父類結(jié)構(gòu)同樣可以繪制在檢查器面板上
[Toggle("Enabled")]
public MyToggleObject Three = new MyToggleObject();
[Toggle("Enabled")]
public MyToggleA Four = new MyToggleA();
[Toggle("Enabled")]
public MyToggleB Five = new MyToggleB();
[Serializable]
public class MyToggleObject
{
public bool Enabled;
[HideInInspector]
public string Title;
public int A;
public int B;
}
[Serializable]
public class MyToggleA : MyToggleObject
{
public float C;
public float D;
public float F;
}
[Serializable]
public class MyToggleB : MyToggleObject
{
public string Text;
}
完整示例代碼
using Sirenix.OdinInspector;
using System;
using UnityEngine;
public class ToggleGroupAttributeExample : MonoBehaviour
{
[ToggleGroup("MyToggle")]
public bool MyToggle;
[ToggleGroup("MyToggle")]
public float A;
[ToggleGroup("MyToggle")]
[HideLabel, Multiline]
public string B;
// Toggle for custom data.
[ToggleGroup("EnableGroupOne", "$GroupOneTitle")]
public bool EnableGroupOne = true;
[ToggleGroup("EnableGroupOne")]
public string GroupOneTitle = "One";
[ToggleGroup("EnableGroupOne")]
public float GroupOneA;
[ToggleGroup("EnableGroupOne")]
public float GroupOneB;
// Toggle for individual objects.
[Toggle("Enabled")]
public MyToggleObject Three = new MyToggleObject();
[Toggle("Enabled")]
public MyToggleA Four = new MyToggleA();
[Toggle("Enabled")]
public MyToggleB Five = new MyToggleB();
public MyToggleC[] ToggleList = new MyToggleC[]
{
new MyToggleC(){ Test = 2f, Enabled = true, },
new MyToggleC(){ Test = 5f, },
new MyToggleC(){ Test = 7f, },
};
[Serializable]
public class MyToggleObject
{
public bool Enabled;
[HideInInspector]
public string Title;
public int A;
public int B;
}
[Serializable]
public class MyToggleA : MyToggleObject
{
public float C;
public float D;
public float F;
}
[Serializable]
public class MyToggleB : MyToggleObject
{
public string Text;
}
[Serializable]
public class MyToggleC
{
[ToggleGroup("Enabled", "$Label")]
public bool Enabled;
public string Label { get { return this.Test.ToString(); } }
[ToggleGroup("Enabled")]
public float Test;
}
}