ECS:Entitas 源码浅析 System

发表于2019-12-11
评论0 3.3k浏览

概述

System是ECS的S,也是整个框架的入口,通过对System生命周期的控制,达到控制整个ECS模块的作用

 

Systems类:所有System的管理类,管理四种类型的System:IInitializeSystem, IExecuteSystem, ICleanupSystem, ITearDownSystem。使用List作为容器存储,for进行遍历。Systems实现了接口,Systems本身也可以看做是这四种类型当中的一个,也就是说Systems可以嵌套。

 

IInitializeSystem:初始化,类似Init

IExecuteSystem:每帧执行一次,类似Update

ICleanupSystem:每帧执行一次,类似LeteUpdate

ITearDownSystem:结束时执行一次,类似 OnDestroy

注:从这个意义上讲,System其实就是把我们的manager给拆散了,粒度更细了。而且,如果只是四种类型的话或许不够。

 

IReactiveSystem:继承自 IExecuteSystem接口,多了三个方法:Activate,Deactivate,Clear

Activate:激活

Deactivate:失活

Clear:清理,这说明IReactiveSystem的实现里面存在字段,这岂不是违反了ECS的规范?

 

ithaEKw0vTBi5Wc2oh9C.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IReactiveSystem的实现:ReactiveSystem<TEntity>,MultiReactiveSystem<TEntity, TContexts>,JobSystem<TEntity>

ReactiveSystem<TEntity>:响应式系统,Entity添加到Group或从Group里面删除的时候,触发

MultiReactiveSystem<TEntity, TContexts>:多容器响应式系统,与上面类似

JobSystem<TEntity>:这个是所有的Entity每帧都会响应,但是是多线程的,即便线程数量设置为1,依旧是开启一个子线程,而不是在主线程里执行

 

 

  • 允许他人重新传播作品,但他人重新传播时必须在所使用作品的正文开头的显著位置,注明用户的姓名、来源及其采用的知识共享协议,并与该作品在磨坊上的原发地址建立链接
  • 不可对作品做出任何形式的修改
  • 可将作品进行商业性使用

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: