# EditorExtension 基础工具模块手册 ## 模块概述 基础工具模块由 `EditorIcons` 和 `EditorToolFunctionAttribute` 两部分组成: - `EditorIcons`:浏览、检索、预览并导出 Unity 内置编辑器图标。 - `EditorToolFunctionAttribute`:把静态方法声明为“编辑器快捷工具”,供 `EditorQuickToolBar` 自动收集。 ## 适用场景 - 快速查找 Unity 内置图标。 - 将团队常用编辑器方法集中到工具栏菜单。 - 避免为每个工具重复创建顶级菜单。 ## 快速上手 ### 打开图标浏览器 - 菜单:`Tools/Extension/Editor Icons` ### 声明工具函数 ```csharp using AlicizaX.Editor.Extension; using UnityEngine; public static class DemoEditorTools { [EditorToolFunction("Demo/打印当前场景", 10)] public static void PrintScene() { Debug.Log(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene().path); } } ``` ## 详细使用说明 ### `EditorIcons` - 支持关键字搜索。 - 支持大小图标切换。 - 支持单个导出 PNG。 - 支持批量导出全部图标到目录。 ### `EditorToolFunctionAttribute` - 仅扫描静态方法。 - 扫描时机为编辑器加载阶段。 - 扫描结果按 `MenuOrder` 升序排列。 - 建议被标记的方法不要带参数。 ## 可调用 API ### 类型:`EditorIcons` 源码:`Packages/com.alicizax.unity.editor.extension/Editor/EditorIcons.cs` #### `public static void EditorIconsOpen()` - 作用:打开图标浏览窗口。 - 参数:无。 - 返回值:`void`。 #### `public static string[] ico_list` - 作用:内置图标名称列表。 - 示例: ```csharp foreach (var iconName in EditorIcons.ico_list) { Debug.Log(iconName); } ``` ### 类型:`AlicizaX.Editor.Extension.EditorToolFunctionAttribute` 源码:`Packages/com.alicizax.unity.editor.extension/Editor/EditorToolFunctionAttribute.cs` #### `public EditorToolFunctionAttribute(string menu, int menuOrder = 0)` - 作用:声明工具菜单路径与排序值。 - 参数: - `menu`:菜单路径。 - `menuOrder`:排序值。 #### `public string ToolMenuPath { get; }` - 作用:获取菜单路径。 #### `public int MenuOrder { get; }` - 作用:获取排序值。 #### `public MethodInfo MethodInfo { get; }` - 作用:获取实际绑定的方法信息。 #### `public void SetMethodInfo(MethodInfo methodInfo)` - 作用:由收集器在扫描时写入目标方法。 ## 集成建议 - 推荐把所有项目编辑器命令统一声明为 `EditorToolFunctionAttribute`。 - 图标挑选可先通过 `EditorIcons` 查名,再用于按钮和菜单项。