在当前的 Unity 工作流程中,您:
- 创建 GameObject。
- 向游戏对象添加组件,为您的对象提供所需属性:
- 渲染
- 冲突
- 刚体物理
- 创建 MonoBehaviour 脚本并将其添加到对象中,以便在运行时控制和更改这些组件的状态。
图 1.典型 gameobject 和组件列表。
我总结了ECS带来的一些改变:
1.全新的编程设计 ,原来所有的都是对象,现在所有都是实体,我们原来是用控制器来操控对象,现在用System来操控Component里的数据,而数据通过实体表现出来;
2.大数据将以 大量实体 进行展示,因为速度的突破,不用担心渲染跟不上了,万人同屏不卡顿;
3.迎接 新一代引擎 架构,与ECS相伴的还有Jobs(C#任务系统),Burst编译器,三者构成DOTS(新的游戏开发架构);
4.全新的 编辑器 ,Unity的编辑器会重做,原来那套OOP的编辑器是看不见Entity的,毕竟已经不是对象了,至于做成什么样子,值得期待;
5.新的物理引擎Havok Physics ,Unity为了ECS还特别收购了这家公司;
6.看不见的 ECS底层架构 ,我们现在虽然已经可以使用了,但是底层还在完善,利用 DOTS Data-Oriented Tech Stack ,面向数据的堆栈技术,我们会跑得更快;
IJobForEach:
IJobChunk:
SpawnFromMonoBehaviour:
Spawn流程大体如下:
DOTS系统: