Unity Editor 工具开发 (一)
Unity EditorTool Dev Tutorial(一)
最近,公司项目新开,要笔者写一些给策划用的工具,对Unity有了解的朋友肯定知道Unity的插件工具是十分丰富的,提供的API能让开发者自定义工具。于是作为小白的笔者,也一股脑扎进了工具开发的漩涡中。发现关于Editor的基础教程,在国内非常少,于是,笔者便有了记录学习Editor的想法。本文将持续记录笔者从零搭建工具的所见所闻。
前言
笔者也是在学习Editor中,写下的这篇记录,若有对该工具的感兴趣,笔者在Github上更新这个项目,一套正在开发的工具。Ps:没写Readme的
1. 创建Editor的文件夹
在Unity中存在特殊的几种文件夹:
- Editor
- Plug-ins
- Resources
- StreamingAssets
- ...
这里主要介绍Editor:
- Editor文件夹的主要功能是 提供一个给Editor代码运行的环境
- 当游戏打包时不会将该环境下的代码编译打包进游戏中
- 当编辑器启动时,在该文件夹中的代码就能开始启动了,不需要点击Play
- Editor文件夹不是指某一个文件夹,而是指所有在项目工程内所有命名为Editor文件夹。即同一个工程内,可以有多个Editor文件夹,路径任意,只需要名称为Editor即可
- 细心的朋友能注意到,Editor与游戏逻辑代码是不同的两个Assembly
本文主要用到这种,其余更多的特殊文件夹,这里不赘述,要更多详细的资料,参考
官方文档
2. 创建启动菜单栏
例图:
使用过Unity工具的朋友,必然见到过这种,自定义的菜单栏,下面是实现该种菜单栏的实例代码:
c#
[MenuItem("Ou/UnitEditor")]
static void Init()
{
EditorWindow.GetWindow
}
分析:
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