Unity拓展编辑器 —— EditorWindow(一)

我们在操作unity中会经常遇到这样那样的窗口。

Inspector窗口,Console窗口,Hierarchy窗口,等 这些都是unity内置的。

 

又或者说你看到人家插件的窗口,花花绿绿的,自己也想写一个拿来学习(装逼)

unity已经为开发者做了很多支持。 还是去看api,全英文我怎么看的懂,找翻译,找度娘,不要找借口

废话不多说,上车了。

传送门官方EditorWindow   API   https://docs.unity3d.com/ScriptReference/EditorWindow.html

具体参数我就暂时不介绍了。 太多 讲不过来,自己慢慢试(狗头保命.png)

 

 

BeginArea在固定的屏幕区域开始GUI控件的GUI布局块。
BeginHorizontal开始水平对照组。
BeginScrollView开始一个自动布局的滚动视图。
BeginVertical开始一个垂直控制组。
Box制作一个自动布局框。
Button做一个单一的按钮。
EndArea关闭一个以BeginArea开始的GUILayout块。
EndHorizontal关闭一组开始与开始横向。
EndScrollView以调用开始滚动视图来结束滚动视图。
EndVertical结束一组开始与开始垂直。
ExpandHeight传递给控件以允许或不允许垂直扩展的选项。
ExpandWidth传递给控件以允许或不允许水平扩展的选项。
FlexibleSpace插入一个灵活的空间元素。
Height传递给控件的选项,使其具有绝对高度。
HorizontalScrollbar制作一个水平滚动条。
HorizontalSlider一个水平滑块,用户可以拖动来改变最小值和最大值之间的值。
Label制作一个自动布局标签。
MaxHeight传递给控件以指定最大高度的选项。
MaxWidth传递给控件以指定最大宽度的选项。
MinHeight传递给控件以指定最小高度的选项。
MinWidth传递给控件以指定最小宽度的选项。
PasswordField创建一个用户可以输入密码的文本字段。
RepeatButton做一个重复按钮。只要用户按住不放,按钮就会返回true
SelectionGrid制作一个选择网格。
Space在当前布局组中插入空格
TextArea创建一个多行文本字段,用户可以在其中编辑字符串。
TextField创建一个单行文本字段,用户可以在其中编辑字符串。
Toggle做一个开关按钮。
Toolbar制作一个工具栏
VerticalScrollbar制作一个垂直滚动条
Width传递给控件的选项,使其具有绝对宽度。
Window 

 

创建文件夹Editor与脚本,位置无所谓,跟 Resources一样。

然后自己去EditorWindow类中看下,F12,知其然知其所以然

 

上代码,最简单的窗口

public class EditorWindowTimor : EditorWindow
{
    [MenuItem("Timor/TimorWindow -- 提莫队长的窗口")]  //添加菜单选项
    public static void ShowWindow()
    {
        EditorWindow window = EditorWindow.GetWindow(typeof(EditorWindowTimor));
        window.Show();      
    }
}

效果

 

继续研究GetWindow参数

所以这几中写法都没有问题,自己去改参数,挨个试试

EditorWindow window1 = EditorWindow.GetWindow(typeof(TimorWindow));
EditorWindow window2 = EditorWindow.GetWindow(typeof(TimorWindow), true, "提莫队长的窗口", true);
EditorWindow window3 = EditorWindow.GetWindow<TimorWindow>();
EditorWindow window4 = EditorWindow.GetWindow<TimorWindow>(true);
EditorWindow window5 = EditorWindow.GetWindowWithRect(typeof(TimorWindow), new Rect(Screen.width / 3, Screen.height / 3, 500, 500), true, "提莫队长的窗口");

我们去看官方API

参数

t : 窗口类型,记得继承editorWindow

title :窗口的标题

focus : 是否获得焦点,默认获得焦点

utility:是窗口是否浮动,如果是就不能内嵌到unity其他窗口中去,如果不是就能嵌入其他窗口。(可以省略,默认为内嵌入式)

rect :窗体的出现位置,及窗体大小

 

 窗体事件

using UnityEngine;
using UnityEditor;
 
namespace Timor.Editor
{

    public class TimorFirstWindow : EditorWindow
    {

        [MenuItem("Timor/我的第一个窗口")]
        public static void ShowMyWindow()
        {
            TimorFirstWindow window = EditorWindow.GetWindow<TimorFirstWindow>("提莫的窗口");

            window.Show();
            window.minSize = new Vector2(200, 300);
        }

        #region 窗体事件调用
        private void OnProjectChange()
        {
            Debug.Log("当场景改变时调用");
        }

        private void OnHierarchyChange()
        {
            Debug.Log("当选择对象属性改变时调用");
        }

        void OnGetFocus()
        {
            Debug.Log("当窗口得到焦点时调用");
        }

        private void OnLostFocus()
        {
            Debug.Log("当窗口失去焦点时调用");
        }

        private void OnSelectionChange()
        {
            Debug.Log("当改变选择不同对象时调用");
        }

        private void OnInspectorUpdate()
        {
            Debug.Log("监视面板调用");
        }

        private void OnDestroy()
        {
            Debug.Log("当窗口关闭时调用");
        }

        private void OnFocus()
        {
            Debug.Log("当窗口获取键盘焦点时调用");
        }
        #endregion
    }

}

 

 

 

 

 

 

好了,这些都是空白的窗口,下几篇讲添加内容

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值