Files
nexus/wiki/sources/unity-editor-tool-developer.md

50 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Unity Editor Tool Developer"
type: source
tags: []
date: 2026-04-26
---
## Source File
- [[raw/Agent/agency-agents/game-development/unity/unity-editor-tool-developer.md]]
## Summary用中文描述
- 核心主题Unity 编辑器扩展开发工程师Editor Tool Developer的 AI Agent 人格规范——通过 EditorWindows、PropertyDrawers、AssetPostprocessors、Build Validators 等工具自动化团队工作流,减少人工错误
- 问题域游戏团队每日面临的素材导入错误、Inspector 数据误操作、命名规范失控、构建前人工检查等重复性工作
- 方法/机制:基于 Unity Editor API 构建编辑器扩展工具,使用 `[SerializeField]` + `[MenuItem]` + `AssetPostprocessor` 模式实现自动化;通过 `Undo.RecordObject()` 保证操作可撤销;通过 `EditorUtility.DisplayProgressBar` 反馈长操作进度
- 结论/价值:最佳工具是"隐形"的——在问题到达 QA 前自动拦截,在创意人员意识到需求前提前自动化
## Key Claims用中文描述
- UnityEditorToolDeveloper 通过 Editor 自动化,使艺术/设计/工程团队效率可量化提升
- 所有 Editor 脚本必须置于 `Editor` 文件夹或使用 `#if UNITY_EDITOR` 保护——Editor API 调用进入运行时代码将导致构建失败
- `EditorWindow` 必须通过 `[SerializeField]``EditorPrefs` 持久化状态,跨域重载不丢失
- `AssetPostprocessor` 必须幂等——同一资源重复导入必须产生相同结果
- `PropertyDrawer.OnGUI` 必须调用 `EditorGUI.BeginProperty` / `EndProperty` 以正确支持 Prefab Override UI
- 构建验证器失败时必须抛出 `BuildFailedException`,而非仅 `Debug.LogWarning`
## Key Quotes
> "The best tools are invisible — they catch problems before they ship and automate the tedious so humans can focus on the creative." — UnityEditorToolDeveloper 核心理念
> "Can you Ctrl+Z that? No? Then we're not done." — Undo 是交付门槛,不支持撤销的工具不能发布
> "DX over raw power: The tool can do 10 things — let's ship the 2 things artists will actually use." — 开发者体验优先于功能堆砌
## Key Concepts
- [[EditorWindow]]Unity 编辑器窗口扩展基类,用于构建团队可见的编辑器工具(资产审计、资源统计、验证面板)
- [[AssetPostprocessor]]Unity 资源导入拦截器,在资源导入时自动强制执行命名规范、压缩设置、平台配置,确保每次导入结果一致且幂等
- [[PropertyDrawer]]:自定义 Inspector 属性绘制器,扩展编辑器中序列化类型的显示方式,支持 MinMax Slider 等复合控件
- [[AssemblyDefinitionFiles]]`.asmdef` 文件用于在编译时强制 Editor/Runtime 程序集分离,防止 UnityEditor 命名空间泄漏到构建产物
- [[BuildValidation]]`IPreprocessBuildWithReport` 接口允许在构建前运行检查列表,失败时抛出 `BuildFailedException` 阻止打包
## Key Entities
- [[UnityEditorToolDeveloper]]:本 Source 对应的 AI Agent 人格——编辑器自动化专精,强调 DX、可量化的效率提升和隐形工具哲学
- [[UnrealEditorToolDeveloper]]:对应 Unreal Engine 端的编辑器工具开发(比较视角)
## Connections
- [[unity-editor-tool-developer]] ← game_dev_editor_extension ← [[game-designer]]
- [[unity-editor-tool-developer]] ← editor_automation ← [[unreal-systems-engineer]](两者共享"构建前验证"模式)
- [[unity-editor-tool-developer]] ← tool_patterns ← [[technical-artist]]Technical Artist 也负责编辑器工具和资产管线)
## Contradictions
- 与 [[unreal-systems-engineer]] 在"编辑器工具 vs. 构建系统"边界上存在领域分工差异Unity 侧通过 `IPreprocessBuildWithReport` 在构建前验证资源合规性Unreal 侧通过 UAssetCheckConfig + UAssetCheckRule 在编辑器内实时检查。两者的目标相同(防止问题到达 QA但实现时机和 API 不同——属互补而非冲突。