这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情
Unity编辑器扩展简介
Editor文件夹
Editor文件夹可以在根目录下,也可以在子目录里,只要名字叫Editor就可以。比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor的文件夹都可以。Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用。
一般呢会把一些工具类的脚本放在这里,或者是一些编辑时用的DLL。 比如我们现在要做类似技能编辑器,那么编辑器的代码放在这里是再好不过了,因为实际运行时我们只需要编辑器生成的文件,而不需要编辑器的核心代码。
在Editor文件夹下创建脚本(只在Unity编辑下使用,不会被打包)。
Path参数的一些额外注意事项:
如果首个词是已经存在的菜单名字(“Assets”, “Window”等),你的菜单项将被添加到这个菜单下(除了Component) 你必须指定一个根菜单和一个菜单项名字,允许在所有菜单名以及菜单项名字中出现空格 可以选择在项名字加空格后的地方指定一个按键来设置快捷键
MenuItem属性的另一个实现方法就是添加验证方法的连接以及指定你菜单项的排列顺序的功能。
MenuItem(string path, bool isValidateFunction, int priority)
参数:
- isValidateFunction --- 当置为真,使得这个方法在相应的方法(另外一个有MenuItem标签的有相同路径的方法)可以运行前被调用。
- Priority — 这个值指定菜单项出现在每个菜单中的顺序。
示例代码
上图代码:
using UnityEngine;
using UnityEditor; //引入命名空间
public class Tools {
//[MenuItem("路径/子路径/...",flase,优先级)]
//优先级之间的差大于11,就分栏
[MenuItem("MyTool/MyTool1",false,0)]
static void MyTool1()
{
Debug.Log("MyTool111");
}
[MenuItem("MyTool/MyTool2", false,12)]
static void MyTool2()
{
Debug.Log("MyTool222");
}
[MenuItem("MyTool/MyTool3", false, 1)]
static void MyTool3()
{
Debug.Log("MyTool333");
}
}