ECS 里面基本的一些概念
Unity ECS框架里面有几个重要的概念:
Entity, ComponentData, System,Archetype, EntityManager, World;
ComponentData:
组件数据,开发的时候,可以把每个功能相关的数据放到ComponentData里面。
Entity:
对象实体,纯数据对象,里面包含了一个个的ComponentData, 每个相关功能使用的数据我们放Entity的ComponentData里面, 如图:

System:
具体算法逻辑的实现,System算法数据基于Entity里面对应处理的ComponentData。游戏引擎每次Update的时候,System都会根据每个Entity里面的它使用的ComponentData, 来更新数据完成计算。
EntityManager:
负责Entity相关类型信息,对象实体的创建与管理。
Archetype:
Entity是由多个ComponentData组成的,每种Entity类型都会对应一个Archetype, 里面描述了这个Entity类型以及相关的布局。Archetype由EntityManager创建出来,创建出来后这个类型的Entity的大小,包含的组件数据,内存布局都确定了。
World:
世界包含多个Entity组成Entity群体,通过世界把这些Entity群体孤立起来。Unity里面可以同时拥有多个不同的世界, 每个世界独立包含EntityManager, 与Systems, 在世界里面创建出来的一个Entity,只属于这个世界。世界里每个System也只能迭代一个世界里面的Entity实体数据。你可以创建多个World。
总结一下Unity ECS的使用步骤与逻辑关系:
(1) 创建一个ECS的World;
(2) 使用World的EntityManager为不同Entity类型创建出来Archetype;
(3) 基于Archetype, 我们创建出来Entity内存对象, 并初始化Entity里面每个ComponentData数据;
(4)为ECS World编写System算法,World会调用System算法来迭代每个Entity里的相关ComponentData;

(Unity ECS 架构图)