欢迎光临散文网 会员登陆 & 注册

ECS 里面基本的一些概念

2022-09-19 16:23 作者:游戏开发RAIN  | 我要投稿

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 架构图)



ECS 里面基本的一些概念的评论 (共 条)

分享到微博请遵守国家法律