优秀网页设计网站是,建设部工程业绩网站,新网站不收录,php网站源码大全文章目录 1 Editor 文件夹2 MenuItem3 使用示例3.1 打开网址3.2 打开文件夹3.3 Menu Toggle3.4 Menu 代码复用3.5 MenuItem 激活与失活4 代码示例 1 Editor 文件夹
Editor 文件夹是 Unity 中的特殊文件夹#xff0c;Unity 中所有编辑器相关的脚本都需要放置在其中#xf… 文章目录 1 Editor 文件夹2 MenuItem3 使用示例3.1 打开网址3.2 打开文件夹3.3 Menu Toggle3.4 Menu 代码复用3.5 MenuItem 激活与失活4 代码示例 1 Editor 文件夹
Editor 文件夹是 Unity 中的特殊文件夹Unity 中所有编辑器相关的脚本都需要放置在其中其相关的命名空间为 UnityEditor。
使用命名空间 UnityEditor 的脚本最终不能被 Unity 打包需要将这些脚本放置到 Editor 文件夹中避免打包时报错。 2 MenuItem
在静态函数前加上特性[MenuItem(页签/一级选项/二级选项/....)]则会在菜单栏显示对应的页签。
当点击页签时特性修饰的静态函数将被执行。
[MenuItem(EditorExtension/01.Menu/01.Hello Editor)]
static void HelloEditor()
{Debug.Log(Hello Editor);
}3 使用示例
3.1 打开网址
使用 Application.OpenURL 打开网址。
[MenuItem(EditorExtension/01.Menu/02.Open Bilibili)]
static void OpenBilibili()
{Application.OpenURL(https://bilibili.com);
}3.2 打开文件夹
在 Editor 中可以使用 EditorUtility 提供的 API 直接打开文件夹。
[MenuItem(EditorExtension/01.Menu/03.Open PersistentDataPath)]
static void OpenPersistentDataPath()
{EditorUtility.RevealInFinder(Application.persistentDataPath);
}[MenuItem(EditorExtension/01.Menu/04.打开策划目录)]
static void OpenDesignerFolder()
{EditorUtility.RevealInFinder(Application.dataPath.Replace(Assets, Library));
}3.3 Menu Toggle
Menu 类为页签提供 Toggle 功能点击页签后可在旁边显示 √。
[MenuItem(EditorExtension/01.Menu/05.快捷键开关)]
static void ToggleShotCut()
{mOpenShotCut !mOpenShotCut;Menu.SetChecked(EditorExtension/01.Menu/05.快捷键开关, mOpenShotCut);
}3.4 Menu 代码复用
使用 EditorApplication.ExecuteMenuItem 可复用执行 MenuItem 对应的静态函数。
尽管直接调用静态函数更为方便但当该静态函数为 private 且需要在外部调用时便可使用该方法。
[MenuItem(EditorExtension/01.Menu/06.Hello Editor _c)]
static void HelloEditorWithShotCut()
{// 等价于调用 HelloEditor() 函数EditorApplication.ExecuteMenuItem(EditorExtension/01.Menu/01.Hello Editor);
} 上述代码为菜单路径添加了快捷键 “C” 触发因为在菜单路径 “EditorExtensions/01.Menu/06.Hello Editor” 后添加了 _c使用空格隔开菜单路径与快捷键使用下划线表示快捷键是单个键 “C”。 单键菜单路径 空格 下划线 想要的按键组合键下划线替换为 %表示 Ctrl#表示 Shift表示 Alt 其他支持的按键 LEFT、RIGHT#LEFT 表示左 Shift 按键。UP、DOWN、F1-F12、HOME、END、PGUP、PGDN。 3.5 MenuItem 激活与失活
控制 MenuItem(path) 的激活与失活需要
额外声明一个静态方法添加 MenuItem 特性。 MenuItem 的菜单路径与目标路径 path 一致。MenuItem 额外添加参数 validate true。 静态方法方法返回 bool 类型值表示 MenuItem 是否可被点击被激活。
[MenuItem(EditorExtension/01.Menu/06.Hello Editor _c, validate true)]
static bool HelloEditorWithShotCutValidate()
{// 由 Toggle“05.快捷键开关” 控制return Menu.GetChecked(EditorExtension/01.Menu/05.快捷键开关);
}4 代码示例
using UnityEngine;namespace EditorExtension
{using UnityEditor;public class MenuItemExample{[MenuItem(EditorExtension/01.Menu/01.Hello Editor)]static void HelloEditor(){Debug.Log(Hello Editor!);}[MenuItem(EditorExtension/01.Menu/02.Open Bilibili)]static void OpenBilibili(){Application.OpenURL(https://www.bilibili.com);}[MenuItem(EditorExtension/01.Menu/03.Open PersistentDataPath)]static void OpenPersistentDataPath(){EditorUtility.RevealInFinder(Application.persistentDataPath);}[MenuItem(EditorExtension/01.Menu/04.打开策划目录)]static void OpenDesignerFolder(){EditorUtility.RevealInFinder(Application.dataPath.Replace(Assets, Library));}[MenuItem(EditorExtension/01.Menu/05.快捷键开关)]static void ToggleShotCut(){var menuPath EditorExtension/01.Menu/05.快捷键开关;var check Menu.GetChecked(menuPath);Menu.SetChecked(menuPath, !check);}[MenuItem(EditorExtension/01.Menu/06.Hello Editor _c)]static void HelloEditorWithShotCut(){// 复用方式 1直接调用方法但因为方法为 private不可外部调用// HelloEditor();// 复用方式 2复用菜单可外部调用EditorApplication.ExecuteMenuItem(EditorExtension/01.Menu/01.Hello Editor);}[MenuItem(EditorExtension/01.Menu/06.Hello Editor _c, validate true)]static bool HelloEditorWithShotCutValidate(){// 由 Toggle“05.快捷键开关” 控制return Menu.GetChecked(EditorExtension/01.Menu/05.快捷键开关);}[MenuItem(EditorExtension/01.Menu/07.Open Bilibili %e)]static void OpenBilibiliWithShotCut(){EditorApplication.ExecuteMenuItem(EditorExtension/01.Menu/02.Open Bilibili);}[MenuItem(EditorExtension/01.Menu/07.Open Bilibili %e, validate true)]static bool OpenBilibiliWithShotCutValidate(){return Menu.GetChecked(EditorExtension/01.Menu/05.快捷键开关);}[MenuItem(EditorExtension/01.Menu/08.Open PersistentDataPath %#t)]static void OpenPersistentDataPathWithShotCut(){EditorApplication.ExecuteMenuItem(EditorExtension/01.Menu/03.Open PersistentDataPath);}[MenuItem(EditorExtension/01.Menu/08.Open PersistentDataPath %#t, validate true)]static bool OpenPersistentDataPathWithShotCutValidate(){return Menu.GetChecked(EditorExtension/01.Menu/05.快捷键开关);}[MenuItem(EditorExtension/01.Menu/09.打开策划目录 r)]static void OpenDesignerFolderWithShotCut(){EditorApplication.ExecuteMenuItem(EditorExtension/01.Menu/04.打开策划目录);}[MenuItem(EditorExtension/01.Menu/09.打开策划目录 r, validate true)]static bool OpenDesignerFolderWithShotCutValidate(){return Menu.GetChecked(EditorExtension/01.Menu/05.快捷键开关);}}
}