UnityECS框架源码分析
文章平均质量分 66
分析Unity2018的ECS框架Entities的源码
liuhaopen
这个作者很懒,什么都没留下…
展开
-
Unity2018 ECS框架Entities源码解析(四)System注入组件信息
我们上章谈过ComponentSystem需要为注入的字段找到符合条件的Archetype链表(m_FirstMatchingArchetype),有两种实现方式,一是每次Update前都遍历所有Archetype找一次,这样简单粗暴但过于低效;复杂点的是做法二,在创建好System时就找一次,之后有新的Archetype创建时就判断一下是否满足条件,是则加进来。我们先从最简单的例子看起:...原创 2018-12-28 10:23:02 · 7517 阅读 · 2 评论 -
Unity2018 ECS框架Entities源码解析(三)ComponentDataArray的实现
一个普通的System大体是这样的:public class SampleSystem : ComponentSystem{ public struct Data { public readonly int Length; public ComponentDataArray<A> As; public Compon...原创 2018-12-23 21:28:00 · 8629 阅读 · 1 评论 -
Unity2018 ECS框架Entities源码解析(二)组件与Chunk的内存布局
为了性能考虑,所有Entity里的组件数据都会存放在被称为Chunk的连续内存空间里,因为cpu访问某内存时会顺便加载附近的一段数据,所以数据的连续存放有利于提高缓存命中。当然,并不是所有的A组件的值都放在同一个Chunk里的,Chunk是按EntityArchetype分配的。EntityArchetype核心是Archetype类,其实就是一个组件的数组,拥有相同组件集合的Entity指向...原创 2018-12-20 16:43:03 · 12115 阅读 · 2 评论 -
Unity2018 ECS框架Entities源码解析(一)框架的启动与循环
本文主题:ECS框架的启动和循环,System的OnUpdate函数在哪里被调用,运行时disable一个System先上个简约版的类图:World:保存着一个EntityManager和一堆ComponentSystem,默认情况下游戏启动时会为我们创建一个World并通过反射把所有的ComponentSystem类加进去。你要定义多个World也可以,像守望先锋那样有个普通游戏时的...原创 2018-12-07 11:28:58 · 13221 阅读 · 7 评论