Unity Editor 知识点整理(创建自定义 Inspector 补充)

绘制按钮

			//绘制按钮
            //判断行数 列数是否发生变化
            //如果没有变化 这两个按钮就变为灰色 不响应事件
            bool oldEnabled = GUI.enabled;
            GUI.enabled = (_newTotalColumns != _myTarget.TotalColumns   ||    _newTotalRows != _myTarget.TotalRows);
            //参数: 标签,大小
            bool ButtonResize = GUILayout.Button("Resize", GUILayout.Height(2 * EditorGUIUtility.singleLineHeight));
            if (ButtonResize)
            {
    
    
                //弹出对话框 询问是否调整
                if(EditorUtility.DisplayDialog("关卡生成器","是否确定重置 \n该行为无法撤销","yes","no"))
                {
    
    
                    ResizeLevel();
                }
            }

            //重置数据 为默认的列数和行数
            bool buttonReset = GUILayout.Button("Reset");//大小默认为一行
            if (buttonReset)
            {
    
    
                ResetResizeValues();
            }

            //回复静态类 为原来的值
            GUI.enabled = oldEnabled;

控件失去焦点

 			//让当前控件失去焦点
            GUI.FocusControl("");

EditorGUILayout.的 水平垂直布置

//这个方法对之间的GUI 元素 水平分布
EditorGUILayout.BeginHorizontal();
EditorGUILayout.EndHorizontal();

//这个方法对之间的GUI 元素 垂直分布
EditorGUILayout.BeginVertical();
EditorGUILayout.EndVertical();

更改上方的绘制尺寸的函数

	private void DrawLevelSizeGUI()
        {
    
    
            //绘制标题 样式为加粗
            EditorGUILayout.LabelField("Size", EditorStyles.boldLabel);
            //水平布置, box 为GUI样式,添加矩形方框
            EditorGUILayout.BeginHorizontal("box");
            //垂直布置
            EditorGUILayout.BeginVertical();
            //绘制行数 列数
            _newTotalColumns = EditorGUILayout.IntField("Columns", Mathf.Max(1, _newTotalColumns));
            _newTotalRows = EditorGUILayout.IntField("Rows", Mathf.Max(1, _newTotalRows));
            EditorGUILayout.EndVertical();

            //垂直布置
            EditorGUILayout.BeginVertical();
            //绘制按钮
            //判断行数 列数是否发生变化
            //如果没有变化 这两个按钮就变为灰色 不响应事件
            bool oldEnabled = GUI.enabled;
            GUI.enabled = (_newTotalColumns != _myTarget.TotalColumns   ||    _newTotalRows != _myTarget.TotalRows);
            //参数: 标签,大小
            bool ButtonResize = GUILayout.Button("Resize", GUILayout.Height(2 * EditorGUIUtility.singleLineHeight));
            if (ButtonResize)
            {
    
    
                //弹出对话框 询问是否调整
                if(EditorUtility.DisplayDialog("关卡生成器","是否确定重置 \n该行为无法撤销","yes","no"))
                {
    
    
                    ResizeLevel();
                }
            }

            //重置数据 为默认的列数和行数
            bool buttonReset = GUILayout.Button("Reset");//大小默认为一行
            if (buttonReset)
            {
    
    
                ResetResizeValues();
            }
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();
            //回复静态类 为原来的值
            GUI.enabled = oldEnabled;
        }

可以看到Inspector查看器的变为如下图示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43388137/article/details/122222116
今日推荐