6.EditorGUI枚举整数选择按下按钮

6.EditorGUI-枚举整数选择按下按钮


6.1 知识点

枚举选择控件

枚举选择

枚举变量 = (枚举类型)EditorGUILayout.EnumPopup("枚举选择", 枚举变量);

多选枚举
(注意:多选枚举进行的是或运算,声明枚举时一定注意其中的赋值,并且一定要有多种情况的搭配值)

枚举变量 = (枚举类型)EditorGUILayout.EnumFlagsField("枚举多选", 枚举变量);
public enum E_TestType
{
    One = 1,
    Two = 2,
    Three = 4,
    One_and_Two = 1 | 2,
}

E_TestType type;
E_TestType type2;

private void OnGUI()
{
    // 枚举选择
    type = (E_TestType)EditorGUILayout.EnumPopup("枚举选择", type);

    type2 = (E_TestType)EditorGUILayout.EnumFlagsField("枚举多选", type2);
}

整数选择控件

int变量 = EditorGUILayout.IntPopup("整数单选框", int变量, 字符串数组, int数组);
string[] strs = { "选择123", "选择234", "选择345" };
int[] ints = { 123, 234, 345 };
int num = 0;

private void OnGUI()
{
    // 整数选择控件
    // 返回值其实是整数数组当中的某一个值
    num = EditorGUILayout.IntPopup("整数单选框", num, strs, ints);
    EditorGUILayout.LabelField(num.ToString()); // 显示返回的值是什么 
}

按下就触发的按钮控件

EditorGUILayout.DropdownButton(new GUIContent("按钮上文字"), FocusType.Passive)

FocusType枚举告诉UI系统能够获得键盘焦点,当用户按Tab键时在控件之间进行切换。

  • Keyboard:该控件可接收键盘焦点。
  • Passive:该控件不能接收键盘焦点。
private void OnGUI()
{
    // 按下就响应的按钮
    if (EditorGUILayout.DropdownButton(new GUIContent("按钮上文字"), FocusType.Passive))
        Debug.Log("按下就响应");
}


6.2 知识点代码

Lesson06_EditorGUI_枚举整数选择按下按钮

using System.Collections;
using System.Collections.Generic;
using UnityEngine;



public class Lesson06_EditorGUI_枚举整数选择按下按钮 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 枚举选择控件

        //枚举选择
        //  枚举变量 = (枚举类型)EditorGUILayout.EnumPopup("枚举选择", 枚举变量);

        //多选枚举
        //(注意:多选枚举进行的是或运算,声明枚举时一定注意其中的赋值,并且一定要有多种情况的搭配值)
        //  枚举变量 = (枚举类型)EditorGUILayout.EnumFlagsField("枚举多选", 枚举变量);

        #endregion

        #region 知识点二 整数选择控件

        //int变量 = EditorGUILayout.IntPopup("整数单选框", int变量, 字符串数组, int数组);

        #endregion

        #region 知识点三 按下就触发的按钮控件

        //EditorGUILayout.DropdownButton(new GUIContent("按钮上文字"), FocusType.Passive)

        //FocusType枚举时告诉UI系统能够获得键盘焦点 当用户按Tab键时在控件之间进行切换
        //Keyboard	该控件可接收键盘焦点。
        //Passive 该控件不能接收键盘焦点。

        #endregion
    }
}

MyEditorGUILearnWindow

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;


public enum E_TestType
{
    One = 1,
    Two = 2,
    Three = 4,
    One_and_Two = 1 | 2,
}

public class MyEditorGUILearnWindow : EditorWindow
{
    [MenuItem("编辑器拓展教程/MyEditorGUILearnWindow")]
    private static void OpenMyEditorGUILearnWindow()
    {
        MyEditorGUILearnWindow win = EditorWindow.GetWindow<MyEditorGUILearnWindow>("EditorGUI知识讲解窗口");
        //win.titleContent = new GUIContent("EditorGUI知识讲解窗口");
        win.Show();
    }

    #region Lesson05_EditorGUI_文本层级标签颜色

    int layer;
    string tag;
    Color color;

    #endregion

    #region Lesson06_EditorGUI_枚举整数选择按下按钮
    
    E_TestType type;
    E_TestType type2;

    string[] strs = { "选择123", "选择234", "选择345" };
    int[] ints = { 123, 234, 345 };
    int num = 0;

    
    #endregion
    
    private void OnGUI()
    {
        //窗口中的控件相关绘制 逻辑处理相关的内容
        //EditorGUI相关的控件 同样还是需要在OnGUI当中进行实现 才能被显示出来

        #region Lesson05_EditorGUI_文本层级标签颜色

        //文本控件
        EditorGUILayout.LabelField("文本标题", "测试内容");
        EditorGUILayout.LabelField("文本内容");

        //层级标签控件
        // layer = EditorGUILayout.LayerField(layer);//这样可能别人看不明白是选择什么的。建议加个字符串提示
        layer = EditorGUILayout.LayerField("层级选择", layer);
        // tag = EditorGUILayout.TagField(tag);//这样可能别人看不明白是选择什么的。建议加个字符串提示
        tag = EditorGUILayout.TagField("标签选择", tag);

        //颜色获取控件
        color = EditorGUILayout.ColorField(new GUIContent("自定义颜色获取"),
            color, true, true, true);

        #endregion

        #region Lesson06_EditorGUI_枚举整数选择按下按钮

        //枚举选择
        type = (E_TestType)EditorGUILayout.EnumPopup("枚举选择", type);

        type2 = (E_TestType)EditorGUILayout.EnumFlagsField("枚举多选", type2);

        //整数选择控件
        //返回值 其实是整数数组当中的某一个值
        num = EditorGUILayout.IntPopup("整数单选框", num, strs, ints);
        EditorGUILayout.LabelField(num.ToString());//显示返回的值是什么

        //按下就响应的按钮
        if (EditorGUILayout.DropdownButton(new GUIContent("按钮上文字"), FocusType.Passive))
            Debug.Log("按下就响应");

        #endregion
        
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏