4.5 KiB
4.5 KiB
title, type, tags, date
| title | type | tags | date |
|---|---|---|---|
| Unity Architect | source | 2026-04-26 |
Source File
Summary(用中文描述)
- 核心主题:Unity 游戏架构师 AI Agent 人格规范,专注于数据驱动、ScriptableObject(SO)优先的模块化可扩展架构
- 问题域:如何构建避免"意大利面条式代码"的 Unity 项目,消除硬引用、单例滥用、God MonoBehaviour 等反模式
- 方法/机制:ScriptableObject 事件通道(GameEvent)、RuntimeSet 无单例实体追踪、单一职责组件拆分、Inspector SO 引用连线、Custom PropertyDrawer 设计师赋能、Addressables 资源管理、Unity DOTS/ECS 混合架构
- 结论/价值:通过 SO-first 设计,Unity 项目实现零 GameObject.Find()、每个 MonoBehaviour < 150 行、Prefab 场景无关自包含、设计师无需代码即可创建游戏变量/事件/运行时集合
Key Claims(用中文描述)
- ScriptableObject-First 设计:所有共享游戏数据必须存于 ScriptableObject,绝不通过 MonoBehaviour 字段跨场景传递
- GameEvent 事件通道:跨系统通信禁止使用 GetComponent<> 或单例,必须通过 SO 事件通道连线
- RuntimeSet 无单例追踪:全局实体追踪使用 RuntimeSet : ScriptableObject 而非静态单例
- 单一职责强制:每个 MonoBehaviour 只解决一个问题,若能用"and"描述则必须拆分
- 反模式零容忍:God MonoBehaviour(500+ 行)、DontDestroyOnLoad 单例滥用、Update 内轮询逻辑均为禁止项
- Unity DOTS 混合架构:性能关键系统迁移至 Entities(ECS),编辑器友好型游戏逻辑保留 MonoBehaviour
Key Quotes
"Every MonoBehaviour solves one problem only — if you can describe a component with 'and,' split it." — 单一职责原则核心表述 "Treat every scene load as a clean slate — no transient data should survive scene transitions unless explicitly persisted via SO assets." — 场景卫生核心原则 "Designer-accessible: Non-technical team members can create new game variables, events, and runtime sets without touching code." — 设计师赋能核心价值
Key Concepts
- ScriptableObject:Unity 资产形式的可序列化对象,用于存储共享数据、事件通道、运行时集合
- RuntimeSet:继承 ScriptableObject 的泛型集合类型,用于全局追踪活跃实体而不依赖单例
- GameEvent:SO 形式的事件通道(GameEvent : ScriptableObject),用于跨系统解耦通信
- SingleResponsibilityPrinciple:每个 MonoBehaviour 只负责单一职责,超过 150 行即违反
- EventDrivenArchitecture:事件驱动替代 Update() 内轮询,消除 GC 分配
- DataDrivenDesign:数据驱动的模块化 Unity 架构设计理念
- ScriptableObjectEventChannel:ScriptableObject 形式的 GameEvent 系统,通过 Raise/Register 模式实现松耦合
- Addressables:Unity 资源管理系统,替代 Resources.Load(),支持细粒度内存控制和 DLC
- UnityDOTS:Data-Oriented Tech Stack,ECS + Job System + Burst Compiler,用于性能关键路径
- EditorUtilitySetDirty:编辑器脚本修改 SO 数据后必须调用以确保序列化持久化
Key Entities
- UnityArchitect:本文档定义的 AI Agent 人格,数据驱动模块化架构专家,精通 ScriptableObject、职责拆分、单例消除
- UnityEditor:Unity 编辑器环境,ScriptableObject 通过 [CreateAssetMenu] 对设计师可见
- UnityDOTS:Unity Data-Oriented Tech Stack(Entities、Jobs、Burst),用于 CPU 密集型批量操作
Connections
- UnityArchitect ← builds_with ← ScriptableObject
- UnityArchitect ← extends ← UnityMultiplayerEngineer(网络层叠加 SO 架构)
- UnityArchitect ← complements ← UnityShaderGraphArtist(SO 数据驱动视觉资产)
- UnityArchitect ← complements ← UnityEditorToolDeveloper(Custom PropertyDrawer 赋能 SO 设计师体验)
- UnityArchitect ← builds_with ← UnityDOTS(性能关键路径使用 ECS 混合架构)
Contradictions
- 与 UnityMultiplayerEngineer 在客户端预测实现上存在框架差异:
- UnityArchitect 侧:NetworkVariable 通过 SO 引用在 MonoBehaviour 间传递状态
- UnityMultiplayerEngineer 侧:NetworkVariable 直接挂载在 NetworkBehaviour 上
- 两者均遵循服务器权威原则,差异在于 SO 层抽象程度,属架构风格差异而非绝对冲突