Unity编辑器扩展 – Menu Items

参考:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu-items

  

通过Unity MenuItem属性类可以扩展主菜单、属性栏内容菜单、层级栏菜单及资源栏菜单。

MenuItem可以将任意静态函数转换为菜单命令,只有静态函数能使用MenuItem属性。

添加菜单选项

添加一个简单的主菜单按钮

using UnityEditor;
using UnityEngine;
public class MenuItems
{
    [MenuItem("Tools/Clear PlayerPrefs")]
    private static void NewMenuOption()
    {
        PlayerPrefs.DeleteAll();
    }
}

快捷键

支持以下修饰键及特殊键(可以联合使用):

  • % – CTRL on Windows / CMD on OSX
  • # – Shift
  • & – Alt
  • LEFT/RIGHT/UP/DOWN – Arrow keys
  • F1…F2 – F keys
  • HOME, END, PGUP, PGDN

如果没有使用修饰键则需以在快捷键前面添加下划线如:_g 表示快捷键G,快捷键文本前面必须以空格隔开,否则快捷键不起作用。

// Add a new menu item with hotkey CTRL-SHIFT-A
[MenuItem("Tools/New Option %#a")]
private static void NewMenuOption()
{
}

// Add a new menu item with hotkey CTRL-G
[MenuItem("Tools/Item %g")]
private static void NewNestedOption()
{
}

// Add a new menu item with hotkey G
[MenuItem("Tools/Item2 _g")]
private static void NewOptionWithHotkey()
{
}

特殊路径

一些特殊路径会添加到右键菜单:

Assets - Items添加到Assets菜单栏,同时会添加到资源栏右键菜单中。

Assets/Create -items会添加到资源栏“Create”按钮弹出框及右键菜单Create项中。

CONTEXT/ComponentName – items 将会添加到属性栏相应组件右键菜单中。

// Add a new menu item that is accessed by right-clicking on an asset in the project view
[MenuItem("Assets/Load Additive Scene")]
private static void LoadAdditiveScene()
{
    var selected = Selection.activeObject;
    EditorApplication.OpenSceneAdditive(AssetDatabase.GetAssetPath(selected));
}

// Adding a new menu item under Assets/Create
[MenuItem("Assets/Create/Add Configuration")]
private static void AddConfig()
{
    // Create and add a new ScriptableObject for storing configuration
}

// Add a new menu item that is accessed by right-clicking inside the RigidBody component
[MenuItem("CONTEXT/Rigidbody/New Option")]
private static void NewOpenForRigidBody()
{
}

资源栏右键菜单

资源栏创建按钮弹窗框

组件右键菜单
时间: 2024-10-25 22:14:46

Unity编辑器扩展 – Menu Items的相关文章

Unity编辑器扩展chapter1

Unity编辑器扩展chapter1 unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径.学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些小的插件应用的项目工程中去,达到复用的目的.今天首先创建一个新场景生成的菜单项,生成的场景已经绑定好需要的游戏对象及脚本. Tips:1.官方API 2.编辑器扩展脚本都需放在Editor文件夹下,Editor的层级和数目没有要求 EditorUtil.cs :编辑器扩展类,向外部提供编辑器扩展方法

Unity Editor Extensions – Menu Items

转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.html Unity 编辑器允许添加自定义菜单的外观和行为类似内置菜单.这可以用于添加经常常用的功能,可直接从编辑器UI操作. 在这篇文章中,我将展示如何利用新的菜单menu items,Unity 编辑器中创建并尝试提供真实世界的例子用法,对于每个描述的topic. 添加菜单项 为了向top-lev

Unity编辑器扩展Texture显示选择框

学习NGUI插件的时候,突然间有一个问题为什么它这些属性可以通过弹出窗口来选中呢? 而我自己写的组件只能使用手动拖放的方式=.=. Unity开发了组件Inspector视图扩展API,如果我们要写插件方便别人来使用,使用编辑器扩展API让我们的组件显示的更华丽,使用方便 Texture弹出选择框选中图片赋值: 1个组件对应1个Edit扩展器,继承Editor必须让入Editor文件夹下 MyComponent: using UnityEngine; using System.Collectio

unity编辑器扩展一批量生成图片预制

觉得自己正在慢慢退化,所以以后坚持写博客记录一下成长. 今天分享一个以前用到的一个功能,unity编辑器的一个扩张工具--批量生成图片,有兴趣的朋友可以进行扩展 闲话少说直接上代码: namespace Game.Utility{    public class BatchCreatePrefab : EditorWindow    {        [MenuItem("Tools/生成预制")]        private static void PrefabWrapTool()

Unity 编辑器扩展 场景视图内控制对象

http://blog.csdn.net/akof1314/article/details/38129031 假设有一个敌人生成器类,其中有个属性range用来表示敌人生成的范围区域大小,那么可以用OnDrawGizmos函数来绘制它在场景视图所代表的区域大小,便于开发调试.这个敌人生成器类,类似如下: 12345678910111213141516171819   using UnityEngine;using System.Collections; public class EnemySpa

Unity 编辑器扩展自定义窗体

这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面. 代码如下: using UnityEngine; using UnityEditor; public class MyEditor : EditorWindow { [MenuItem("GameObject/window")] static void AddWindow() { Rect wr = new Rect(0, 0, 500, 500); M

Unity编辑器扩展相关知识

1.一些类 1.1.GUI 界面 1.2.GUILayout 界面布局 1.3.GUIStyle 界面样式 1.4.GUIContent 界面内容 1.5.Editor 编辑器 1.6.EditorUtility 编辑器工具 1.7.EditorWindow 编辑器窗口 1.8.EditorGUI 编辑器界面 1.9.EditorGUILayout 编辑器界面布局 1.10.EditorGUIUtility 编辑器界面工具 1.11.Handles 控制柄 1.12.HandleUtility

Unity编辑器扩展-Custom List, displaying data your way

本文转自http://catlikecoding.com/unity/tutorials/editor/custom-list/ Custom List, displaying data your way In this Unity C# tutorial you will create a custom visualization for arrays and lists in the editor. You will learn to create a custom editor use S

Unity编辑器扩展

代码放在Assets/Editor中: using UnityEngine; using UnityEditor; public class MyWindow : EditorWindow { const string MenuName = "Atwal Code Snippet"; enum Code_Type { input_code, rigidbody_force_code, camera_follow } static Code_Type type = 0; static s