【Unity】编辑器基础扩展三:EditorWindow自定义窗口
EditorWindow自定义窗口自定义窗口可以满足更多元化的需求,比如需要按照不同条件一键生成物体时,又或者打包前添加打包数据时,都可以按照自己的需求来绘制自定义窗口以满足开发需求使用Unity 2017.4.16注:1、GetWindow后经测试不需要主动调用Show也可以展示窗口2、绘制窗口控件可以通过GUILayout和GUI代码:using UnityEditor;using Unity
·
EditorWindow自定义窗口
自定义窗口可以满足更多元化的需求,比如需要按照不同条件一键生成物体时,又或者打包前添加打包数据时,都可以按照自己的需求来绘制自定义窗口以满足开发需求
使用Unity 2017.4.16
注:
1、GetWindow后经测试不需要主动调用Show也可以展示窗口
2、绘制窗口控件可以通过GUILayout和GUI
这里列举一点简单用法,代码:
using UnityEditor;
using UnityEngine;
//继承EditorWindow,可以创建自定义的窗口,自己按照需求绘制窗口
public class BuildWindow : EditorWindow
{
//添加一个选项按钮,用来创建窗口
[MenuItem("Window/Create Build Window")]
static void Create()
{
EditorWindow.GetWindow<BuildWindow>("自定义窗口");//参数是窗口标题
//window.Show();//经测试不需要主动Show也能展示
}
string inputString = "";
//窗口绘制函数,会循环调用绘制
private void OnGUI()
{
//1
//通过GUILayout来绘制需要的显示控件,系统会自动布局
GUILayout.Label("这是一个GUILayout创建的文本");//一个普通文本,用来显示信息
inputString = GUILayout.TextField(inputString);//一个输入文本,每次输入后通过inputString保存输入内容,在下一次OnGUI时再绘制出来
if (GUILayout.Button("清空"))//没有GUILayoutOption参数,系统自动布局
{
//当点击这个按钮时触发的功能
inputString = "";
ShowNotification(new GUIContent("已清空"));//弹出一个提示信息
}
if (GUILayout.Button("关闭", GUILayout.Height(30), GUILayout.Width(100)))//通过后面GUILayoutOption参数自定义控件大小
{
Close();//关闭窗口
}
//2
//通过GUI来绘制需要的显示控件,不会自动布局,布局需要依靠Rect,当Rect不满足长度或宽度时,多余的会被裁剪掉
//因为是通过Rect来控制控件的显示区域,所以当两个控件的Rect有重叠时,两个控件就会重叠在一起
//相比较GUI没有GUILayout灵活
GUI.Button(new Rect(10, 150, 80, 50), "创建");
GUI.Label(new Rect(10, 200, 180, 50), "这是一个GUI创建的文本");
GUI.Label(new Rect(10, 220, 80, 50), "这句话应该有一部分会被裁剪掉,因为太长了");//多余的会被裁剪
GUI.Label(new Rect(10, 260, 80, 50), "不是按钮");
GUI.Label(new Rect(10, 260, 80, 50), "这个也不是按钮");
}
}
窗口展示如下:
GUILayout博客介绍:https://blog.csdn.net/likendsl/article/details/50254827
GUILayout官方文档:https://docs.unity3d.com/ScriptReference/GUILayout.html
GUI官方文档:https://docs.unity3d.com/ScriptReference/GUI.html
更多推荐
已为社区贡献1条内容
所有评论(0)