UD4SL1——Unity中添加菜单栏功能

我们之后在学习通过Excel表生成数据的功能时,可以在菜单栏加一个按钮
点击后就可以自动为我们生成对应数据了

本章代码关键字

1
2
[MenuItem()]                //菜单栏相关
AssetDatabase.Refresh() //刷新Project窗口

为编辑器菜单栏添加新的选项入口

此知识点更新了更具体详细的描述,这里的描述也已迁移过去,因此请直接看:——> [MenuItem()]​

可以通过Unity提供我们的[MenuItem()]​特性在菜单栏添加选项按钮
特性名:[MenuItem()]
命名空间:UnityEditor

规则一:一定是静态方法
规则二:这个菜单栏按钮,必须有至少一个斜杠,不然会报错,它不支持只有一个菜单栏入口
规则三:这个特性可以用在任意的类当中

特性填入的格式:"菜单栏入口名/选项名/二级选项名/..."​,至少要有一个斜杠,否则报错!

1
2
3
4
5
[MenuItem("菜单栏入口/选项/二级选项/三级选项/...")]
private static void Test()
{
Debug.Log("执行方法");
}

效果如下:

​​image

点击后输出:

image

[MenuItem()]​共有三个参数,分别如下:

  1. 路径:string​类型。用 '/'​来分割路径
  2. 是否是验证函数:bool​类型,默认为false​,如果是验证函数,则本函数需要返回bool值,返回结果将决定该选项是否可用
  3. 函数优先级:影响在面板上的出现顺序,默认为1000

关于验证函数:

第二个函数就是验证函数,其返回的bool​值将决定第一个方法出现的选项是否可以点击,如果不能选择,那么第一个函数也将无法执行

1
2
3
4
5
6
7
8
9
10
11
12
[MenuItem("菜单栏入口/选项", false, 1001)]
public static void Test()
{
Debug.Log("执行方法");
}

[MenuItem("菜单栏入口/选项", true, 1001)]
public static bool ValidateTest()
{
//如果有选中一个transform,那么返回true,否则返回false。它的返回值,决定了跟它同路径的第一个方法是否可点击。
return Selection.activeTransform != null;
}

刷新Project窗口内容

此知识点更新了更具体详细的描述,因此请直接看:AssetDatabase.Refresh()​

类名:AssetDatabase
命名空间:UnityEditor
方法:Refresh

1
2
3
4
5
6
[MenuItem("GameTool/CreateDirectory")]
private static void Refrush()
{
Directory.CreateDirectory(Application.dataPath + "/测试文件夹");
AssetDatabase.Refresh();
}

Editor文件夹

Editor文件夹可以放在项目的任何文件夹下,可以有多个,放在其中的内容,项目打包时不会被打包到项目中****一般编辑器相关代码都可以放在该文件夹中