boxmoe_header_banner_img

Hello! 欢迎来到我的博客!

加载中

文章导读

Unity编辑器拓展(1)——拓展菜单栏


avatar
xiaoifei 2024年9月15日 310

一、自定义菜单

TIPS:

在开发Unity编辑器的时候,我们不想在打包时将编辑器源码也一并打包出去,因此Unity为我们提供了一个Editor文件夹存放不会被打包的编辑器资源

使用:在Assets中手动创建一个Editor文件夹

知识点1:菜单栏添加自定义标签

a close up of a computer screen

命名空间:UnityEditor
特性:MenuItem
用法:[MenuItem("页签/一级选项/二级选项/....")]
实例:

using UnityEngine;
using UnityEditor;
public class MyCustomMenu : MonoBehaviour
{
    [MenuItem("MyExtension/SecondaryMenu/SayHello")]
    private static void SayHello()
    {
        Debug.Log("hello world!");
    }
}

可以发现利用这个特性,我们可以快速创建菜单,二级菜单,内容项

知识点2:在GameObject窗口中添加自定义页签

命名空间:UnityEditor
特性:MenuItem
用法:[MenuItem("GameObject/页签/一级选项/二级选项/....")]
实例:

[MenuItem("GameObject/CreateMyObject/create pig")]
private static void MyObject()
{
    Debug.Log("i am pinkPig");
}

可以发现在菜单栏的GameObject中会出现create pig
Hierarchy内右键也会出现

知识点3:在Project窗口中添加自定义页签

命名空间:UnityEditor
特性:MenuItem
用法:[MenuItem("Assets/页签/一级选项/二级选项/....")]
实例:

[MenuItem("Assets/EditorExtension/AI-GeneratingScripts")]
private static void AIGS()
{
    Debug.Log("Completed!");
}

只需要更改特性的参数目录为Assets

知识点4:为Component添加脚本选项

命名空间:UnityEngine
特性:AddComponentMenu
用法:[AddComponentMenu("一级选项/二级选项/....")]
注意:特性需要挂在脚本上,并且这个脚本是需要被打包出去的,所以要放在Editor文件夹外面才能被识别到
实例:

using UnityEngine;
[AddComponentMenu("MyCustomComponents/TemplateScript")]
public class TemplateScript : MonoBehaviour
{
    public float moveSpeed;
    public float turnSpeed;
    public float hp;
    public float atk;
}

点击后可快速创建一个角色脚本

知识点5:为Inspector为脚本右键添加菜单

a screenshot of a computer

命名空间:UnityEditor
特性:MenuItem
用法:[MenuItem("CONTEXT/脚本名/页签/一级选项/二级选项/....")]
实例:

[MenuItem("CONTEXT/Transform/MoreFunc/testFunc")]
private static void Func1()
{
    Debug.Log("Func1");
}

可以为任意的脚本或者组件添加快捷按钮

二、为自定义菜单绑定快捷键

单键

路径后 + 空格 + 下划线 + 想要的按键
例如:
[MenuItem("Unity编辑器拓展/Lesson1/TestFun _A")]

组合键

下划线 可替换为
%  表示ctrl
#  表示shift
&  表示alt

a screenshot of a computer

实例:

[MenuItem("Unity编辑器拓展/Lesson1/TestFun %#&A")]
private static void TestFun()
{
    Debug.Log("TestFun");
}

其他支持的按键

LEFT、RIGHT:持类似#LEFT是左shift之类的按键
UP、DOWN、F1..F12、HOME、END、PGUP、PGDN

总结

MenuItem特性:

  1. [MenuItem("页签/一级选项/二级选项/....")]创建菜单栏拓展页签
  2. [MenuItem("GameObject/页签/一级选项/二级选项/....")]创建GameObject/Hierarchy页签
  3. [MenuItem("Assets/页签/一级选项/二级选项/....")]创建Project页签
  4. [MenuItem("CONTEXT/脚本名/页签/一级选项/二级选项/....")]创建Inspector组件页签

AddComponentMenu特性:

  1. [AddComponentMenu("一级选项/二级选项/....")]添加脚本选项

快捷键:[MenuItem("Unity编辑器拓展/Lesson1/TestFun %#&A")]



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码