目录
前言
一、System 的核心定义与设计准则
1.1 核心定义
1.2 三大核心设计准则
二、System 的核心类型与定义方式
2.1 核心类型分类
2.2 基础 System 定义(ISystem 接口)
2.2.1 最小化 System 模板
2.2.2 关键说明
三、System 的生命周期与执行时机
3.1 完整生命周期流程
3.2 执行顺序控制
3.2.1 执行阶段标记(UpdateInGroup)
3.2.2 相对顺序控制(UpdateBefore/UpdateAfter)
3.2.3 依赖检查(RequireForUpdate)
四、核心能力:实体查询(Entity Query)
4.1 基础查询:SystemAPI.Query
4.1.1 单组件查询
4.1.2 多组件联合查询
4.2 高级筛选:WithAll / WithNone / WithAny
4.3 共享组件筛选(WithSharedComponentFilter)
4.4 底层查询:EntityQuery
五、多线程优化:Job 调度与并行执行
5.1 推荐方式:IJobEntity(自动并行)
5.1.1 基础多线程 System 示例
5.1.2 关键说明
5.2 底层方式:IJobChunk(手动并行)
六、特殊操作:EntityCommandBuffer(实体命令缓冲区)
6.1 ECB 的核心原理
6.2 多线程中使用 ECB 的示例
七、System 的性能优化与最佳实践
7.1 核心优化策略
7.2 常见错误避坑
八、总结
前言
在 Unity ECS(Entity Component System)架构的Entity-Component-System铁三角中,System(系统)是唯一的逻辑载体。它承担着 “数据处理器” 的核心角色,负责查询符合条件的实体(Entity),读取并修改其组件(Component)数据,从而驱动游戏世界的运转。
与传统 MonoBehaviour 中将数据和逻辑耦合在同一脚本的模式不同,ECS 的 System 遵循 **“纯逻辑、无状态”** 的设计原则,彻底实现了 “数据与逻辑的分离”。这种设计让 System 能够利用 Unity DOTS 的 Job System 和 Burst 编译器,在多核 CPU 上实现并行计算,最大化释放硬件性能。
本文基于 Unity Entities 1.4 官方文档,全方位解析 ECS System 的核心概念、生命周期、查询机制、执行顺序控制及多线程优化。通过本文,你将掌握如何编写高性能的系统,理解 System 如何与 Entity、Component 协同工作,为构建大型 ECS 项目奠定坚实的逻辑基础。
前置要求
- 熟练掌握 ECS 中 Entity 和 Component 的核心概念及分类;
- 了解 C# 结构体、值类型特性,熟悉
Unity.Mathematics基础数学类型; - 已安装 Un