本文主题:ECS框架的启动和循环,System的OnUpdate函数在哪里被调用,运行时disable一个System
先上个简约版的类图:

World:保存着一个EntityManager和一堆ComponentSystem,默认情况下游戏启动时会为我们创建一个World并通过反射把所有的ComponentSystem类加进去。你要定义多个World也可以,像守望先锋那样有个普通游戏时的World,被打死后的回放就用另外的World处理。
Entity:只有id和version的小结构体
IComponentData:空接口而已,表明是个ECS的组件
ComponentSystem:继承该类后,用Inject特性标明关注的IComponentData,重写OnUpdate方法就可以访问到所有Entity上的IComponentData了,当然你可以设置更加复杂的关系,比如需要有A组件且没有B组件:
public struct SampleGroup
{
public ComponentDataArray<A> Acs;
public SubtractiveComponent<B> Bcs;
public int Length;
}
甚至你还能指定某组件的值为x的集合:详细例子见:component特殊指定说明
ComponentGroup:在Compo

本文介绍了Unity2018的ECS框架中,Entities的启动流程、System的OnUpdate调用机制以及如何在运行时禁用System。通过World的初始化,ComponentSystem的注册和更新顺序的设定,阐述了ECS框架的核心运作。同时,提供了如何动态控制System执行的方法。
1万+

被折叠的 条评论
为什么被折叠?



