Unity Editor 工具开发 (一)

Unity EditorTool Dev Tutorial(一)

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

前言

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

1. 创建Editor的文件夹

在Unity中存在特殊的几种文件夹:

  1. Editor
  2. Plug-ins
  3. Resources
  4. StreamingAssets
  5. ...

这里主要介绍Editor:

  1. Editor文件夹的主要功能是 提供一个给Editor代码运行的环境
  2. 当游戏打包时不会将该环境下的代码编译打包进游戏中
  3. 当编辑器启动时,在该文件夹中的代码就能开始启动了,不需要点击Play
  4. Editor文件夹不是指某一个文件夹,而是指所有在项目工程内所有命名为Editor文件夹。即同一个工程内,可以有多个Editor文件夹,路径任意,只需要名称为Editor即可
  5. 细心的朋友能注意到,Editor与游戏逻辑代码是不同的两个Assembly

本文主要用到这种,其余更多的特殊文件夹,这里不赘述,要更多详细的资料,参考
官方文档

2. 创建启动菜单栏

例图:

例子

使用过Unity工具的朋友,必然见到过这种,自定义的菜单栏,下面是实现该种菜单栏的实例代码:
c#
[MenuItem("Ou/UnitEditor")]
static void Init()
{
EditorWindow.GetWindow("UnitEditor");
}

分析:
1. [MenuItem("Ou/UnitEditor")],这个Attribute需要引用UnityEditor的命名空间。用处是,给菜单栏提供一个自定义的选项。
2. "Ou/UnitEditor"是菜单的路径,当然你也可以添加到默认的菜单中如"Component/UnitEditor"
3. Static void Init(){...}为点击该选项后的调用函数,需注意一点,该函数必须是静态的。

Ref:[官方文档](https://docs.unity3d.com/ScriptReference/MenuItem.html "官方文档")

以上述
已经可以制作一个简单的小Demo了。
练习:制作一个打印当前年月日的Editor工具

示例:
![](https://i.imgur.com/9Y3yHWG.png)
![](https://i.imgur.com/xQk62Q1.png)

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

——To Be Continue

原文地址:https://www.cnblogs.com/EffectL/p/7642057.html