1.9 KiB
1.9 KiB
#unity/日常积累
Popup/IntPopup/EnumPopup 三种单选标签
三种单选标签栏(虽然它们不是Field,但编辑操作与本节的其他Field一致)
Popup使用较为简单,是传入一个 string[] 选项名称,并将其与 [0,1,2] 这样的 Idx 进行对应输出为int值
其中IntPopup使用比较麻烦,需要一个 value 数值接收,一个 string[] 选项,和一个 int[] 选项对应数值
而EnumPopup使用最为简单,只需要定义好一个 enum 类型即可(注意enum类型 ToStinrg() 和 选项数值指定强转int 的使用)
private int popup;
private string[] popupSelection = new string[] { "选项1", "选项2", "选项3" };
private int intPopup;
private string[] intPopupSelection = new string[] { "选项1", "选项2", "选项3" };//这里是定义展示在Editor那边的选项名称
private int[] PopupValue = new int[] { 857, 114514, 2022 };//这里是定义选项对应的数值
public enum Choise //枚举选项可以通过 ToString() 拿到代码里的名称,也可以通过强转 (int) 拿到其数值
{
选项一 = 857, //enum是可以为选项指定一个int数值对应的,默认值是从0到1排布
选项二 = 114514,
选项三 = 2022
}
private Choise cs;
private void OnGUI() {
popup = EditorGUILayout.Popup("Popup", popup, popupSelection);
Debug.Log("popup:" + popup);//输出 [0,1,2...] Index 下标值
intPopup = EditorGUILayout.IntPopup("IntPopup", intPopup, intPopupSelection, PopupValue);
Debug.Log("intPopup:" + intPopup);//输出与 PopupValue 对应
cs = (Choise)EditorGUILayout.EnumPopup("EnumPopup", cs); //通常需要加强制类型转换
Debug.Log("EnumPopup:" + cs.ToString() + " " + (int)cs);//输出枚举选项,通过ToString可获取选项名称,(int)获取指定值
}