2025-03-26 00:02:56 +08:00

1.9 KiB
Raw Permalink Blame History

#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)获取指定值
       
    }

!Pasted image 20240122174026.png