unity-tooling 是一套面向 Unity 编辑器的工具开发方法,核心目标是减少编辑器操作中的摩擦,让关卡设计、文案与技美工作流更快、更不易出错。它不依赖手工在深层 Inspector 中逐项操作、手输坐标或直接用记事本编辑数据文件,而是通过扩展 Unity 编辑器来构建专用内部工具。\n\n主要能力包括四类编辑器扩展:\n1. PropertyDrawer 与装饰器:自定义特定数据结构在默认 Inspector 中的渲染方式,可使用 EditorGUI、EditorGUILayout 或较新的 UI Toolkit PropertyField;还能创建类似 [ShowIf("hasWeapon")]、[RequiredReference] 的自定义属性,在资源槽为空时以红色错误框提示设计者。\n2. 自定义 EditorWindow:现代做法是用 UXML 与 USS 样式表构建可停靠编辑窗口,具备原生 flexbox 样式、响应式数据绑定和较高性能;适用于关卡分布工具、对话节点图编辑器、音频音库试听器、本地化键管理器等。\n3. AssetPostprocessor 自动化后处理:在导入纹理、模型和音频时自动配置,例如把 UI 精灵设为 Sprite (2D and UI) 并使用 2 的幂压缩、从静态道具中剥离动画轨道与混合形状、将 4K 纹理限制为最大 2048 像素、按文件时长把音频转为 Vorbis/ADPCM。文中给出 TextureAndModelPostprocessor 代码示例,演示 OnPreprocessTexture 与 OnPreprocessModel 的用法。\n4. ScriptedImporter:为工作室自有扩展名(例如 .dialogue、.voxel、.yarn)创建原生导入器,把外部文本或二进制文件在拖入 Project 视图时直接映射为 Unity 原生资源,如 ScriptableObject 或 Prefab。\n\n使用方式上,技能给出一个完整案例:PaletteSpawnerWindow 编辑窗口让关卡设计师通过快捷键打开、选择分类并直接在场景地形上点击生成随机旋转并贴合表面法线的道具,使单个房间的布置时间从 4 小时降到 35 分钟。\n\n适用场景主要是 Unity 项目内部的编辑器工具开发、美术导入管线标准化与自定义数据格式接入。限制与注意事项包括:编辑器专用脚本必须放在 Editor/ 文件夹或用 #if UNITY_EDITOR 包裹,避免构建失败;修改场景对象需用 Undo.RecordObject() 注册撤销;不要在 OnGUI() 中执行文件 I/O 或 AssetDatabase.FindAssets() 等重操作;PropertyDrawer 需正确实现 GetPropertyHeight();耗时编辑器进程应使用进度条。资料未提供安装命令、价格或平台要求等信息。
unity-tooling
编程与开发
更新于 11-01 16:13