当前位置: 首页 > news >正文

2024-02-08 Unity 编辑器开发之编辑器拓展1 —— 自定义菜单栏与窗口

文章目录

  • 1 特殊文件夹 Editor
  • 2 在 Unity 菜单栏中添加自定义页签
  • 3 在 Hierarchy 窗口中添加自定义页签
  • 4 在 Project 窗口中添加自定义页签
  • 5 在菜单栏的 Component 菜单添加脚本
  • 6 在 Inspector 为脚本右键添加菜单
  • 7 加入快捷键
  • 8 小结

1 特殊文件夹 Editor

​ Editor 文件夹是 Unity 中的特殊文件夹,Unity 中所有编辑器相关的脚本都需要放置在其中,其相关的命名空间为 UnityEditor。

​ 使用命名空间 UnityEditor 的脚本最终不能被 Unity 打包,需要将这些脚本放置到 Editor 文件夹中,避免打包时报错。

image-20240208224523481

2 在 Unity 菜单栏中添加自定义页签

  • 命名空间:UnityEditor
  • 特性:MenuItem
  • 用法:在静态函数前加上 [MenuItem("页签/一级选项/二级选项/....")]
  • 作用:当在菜单栏点击该页签时,将执行静态函数中逻辑。
  • 注意:
    1. 不用在意继承对象。
    2. 斜杠必须是 /
public class Lesson1
{[MenuItem("Unity编辑器拓展/Lesson1/TestFun")]private static void TestFun(){Debug.Log("TestFun");}
}
image-20240208224442700

3 在 Hierarchy 窗口中添加自定义页签

  • 命名空间:UnityEditor

  • 特性:MenuItem

  • 用法:在静态函数前加上,并且页签命名放入 GameObject 路径。

    [MenuItem("GameObject/页签/一级选项/二级选项/....")]

  • 注意:

    1. 不用在意继承对象。
    2. 斜杠必须是 /
    3. 在菜单栏的 GameObject 中也会出现对应选项。
[MenuItem("GameObject/Lesson1/TestFun2")]
private static void TestFun2()
{Debug.Log("TestFun2");
}
image-20240208225017977

4 在 Project 窗口中添加自定义页签

  • 命名空间:UnityEditor

  • 特性:MenuItem

  • 用法:在静态函数前加上,并且页签命名放入 Assets 路径。

    [MenuItem("Assets/页签/一级选项/二级选项/....")]

  • 注意:

    1. 不用在意继承对象。
    2. 斜杠必须是 /
    3. 在菜单栏的 GameObject 中也会出现对应选项。
image-20240208225001384

5 在菜单栏的 Component 菜单添加脚本

  • 命名空间:UnityEngine

  • 特性:AddComponentMenu

  • 用法:在想要通过 Component 菜单添加的脚本前加上。

    [AddComponentMenu("一级选项/二级选项/....")]

  • 注意:

    1. 脚本需要继承 MonoBehaviour 对象,且不能放在 Editor 文件夹下。
    2. 斜杠必须是 /
    3. 最后一级选项的名字可以和脚本名不一样,但是建议一致。
    4. 添加该特性的代码可以被 Unity 打包,与因为该特性所在的命名空间不为 UnityEditor。
image-20240208225910444
using UnityEngine;[AddComponentMenu("Unity编辑器拓展/添加脚本/Lesson1_Test")]
public class Lesson1_Test : MonoBehaviour
{ }
image-20240208225803399

6 在 Inspector 为脚本右键添加菜单

  • 命名空间:UnityEditor

  • 特性:MenuItem

  • 用法:在静态函数前加上
    [MenuItem("CONTEXT/脚本名/页签/一级选项/二级选项/....")]

  • 注意:

    1. 不用在意继承对象。
    2. 斜杠必须是 /
[MenuItem("CONTEXT/Lesson1_Test/Lesson1/自定义功能")]
private static void TestFun4()
{Debug.Log("TestFun4");
}
image-20240208230146286

7 加入快捷键

  • 单键:路径后 + 空格 + 下划线 + 想要的按键

  • 组合键:下划线替换为

    1. %表示 Ctrl
    2. #表示 Shift
    3. &表示 Alt
  • 其他支持的按键:

    1. LEFTRIGHT:#LEFT 表示左 Shift 按键。
    2. UPDOWNF1..F12HOMEENDPGUPPGDN
public class Lesson1
{[MenuItem("Unity编辑器拓展/Lesson1/TestFun #F1")]private static void TestFun(){Debug.Log("TestFun");}
}
image-20240208230550896

8 小结

  1. 使用 UnityEditor 命名空间的脚本必须放在 Editor 文件夹下,避免打包报错。
  2. 添加自定义页签,需要用到特性 MenuItem。
  3. 添加代码添加页签,需要用到特性 AddComponentMenu。
http://www.lryc.cn/news/297103.html

相关文章:

  • Intellij IDEA各种调试+开发中常见bug
  • 文件上传-Webshell
  • 掌握虚拟化与网络配置之道:深入浅出VMware及远程管理技巧
  • 【漏洞复现】狮子鱼CMS某SQL注入漏洞
  • Python学习之路-Tornado基础:安全应用
  • 6.0 Zookeeper session 基本原理详解教程
  • 生成式人工智能攻击的一年:2024
  • K8S之Namespace的介绍和使用
  • 封装sku组件
  • Unity笔记:相机移动
  • Java项目管理01-Maven基础
  • 计算机网络(第六版)复习提纲30
  • 基于SSM的图书管理系统
  • 【GAMES101】Lecture 19 相机
  • 《走进科学》灵异事件:Nginx配置改了之后一直报错
  • Select 选择器 el-option 回显错误 value
  • 【51单片机Keil+Proteus8.9】门锁控制电路
  • 比较Kamailio和OpenSIPS的重写contact函数
  • 【ETOJ P1046】斐波那契数列 题解(数学+动态规划)
  • 编码技巧——基于RedisTemplate的RedisClient实现、操作Lua脚本
  • Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi
  • 【PTA浙大版《C语言程序设计(第4版)》|编程题】习题7-3 判断上三角矩阵(附测试点)
  • JVM 性能调优 - 参数调优(3)
  • Django(十)
  • OpenHarmony开源鸿蒙开发之旅
  • SpringBoot之整合PageHelper分页插件
  • Android java基础_类的封装
  • Vue-57、Vue技术路由的参数如何传递
  • 《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
  • Linux 软件管理(YUM RPM)