#Unity Editor 工具开发 (二)

Unity EditorTool Dev Tutorial(二)

最近,公司项目新开,要笔者写一些给策划用的工具,对Unity有了解的朋友肯定知道Unity的插件工具是十分丰富的,提供的API能让开发者自定义工具。于是作为小白的笔者,也一股脑扎进了工具开发的漩涡中。发现关于Editor的基础教程,在国内非常少,于是,笔者便有了记录学习Editor的想法。本文将持续记录笔者从零搭建工具的所见所闻。

前言

笔者也是在学习Editor中,写下的这篇记录,若有对该工具的感兴趣,笔者在Github上更新这个项目,一套正在开发的工具。Ps:没写Readme的

章节介绍

这一节,记录的是:建立窗口,为了后续做节点编辑器使用。

1. 建立窗口

从上节我们知道了,如何添加一个菜单项,来制作启动项。我们需要利用启动函数,来新建一个窗口出来,作为自定义编辑器的Panel。
在Editor中,建立窗口,需要使用UnityEditor中的EditorWindow类。
EditorWindow提供一个静态方法EditorWindow.GetWindow。
话不多说贴上:官方详细

示例:

C#
using UnityEngine;
using System.Collections;
using System;
using UnityEditor;
public class Test{
[MenuItem("Test/Go")]
static void Go()
{
Debug.Log(DateTime.Now.ToLongDateString());
}
}

这是上一章我们用来 打印日期的工具Item菜单,我们接下来将它变成,新建一个窗口的Item菜单。

修改代码如下:
```c#```
using UnityEngine;
using System.Collections;
using System;
using UnityEditor;
public class Test: EditorWindow
{
	//笔者写这个,有单例的习惯
    public static Test Instance;
    [MenuItem("Test/Go")]
    static void Go()
    {
        //Debug.Log(DateTime.Now.ToLongDateString());
		//窗口初始化
        Instance = GetWindow<Test>();
        Instance.titleContent=new GUIContent("My EditorWindow");
        Instance.maxSize=new Vector2(1800,900);
        Instance.minSize = new Vector2(1000, 500);
    }
}

效果图:

笔者使用的方式是最简单的一种,其实这个函数还有更多的参数可以对窗口进行设置。
public static T GetWindow();
public static T GetWindow(bool utility);
public static T GetWindow(bool utility, string title);
public static T GetWindow(string title);
public static T GetWindow(string title, bool focus);
public static T GetWindow(bool utility, string title, bool focus);
所谓 Utility窗口 默认不设置是false,即正常窗口,若设置成false
那么窗口就变成了下图这样:熟悉Unity的朋友很容易明白两者的区别,后者是无法自定义折叠位置的。
而focus,笔者感觉没什么用,官方详细都是说的,若是新建立的窗口,总是focus的。置为false也没用。

——To Be Continue

posted @ 2017-10-12 14:30  EffectL  阅读(342)  评论(0编辑  收藏  举报