系统
系统,ECS中的S,提供了从其当前状态的分量数据变换到其下一个状态的逻辑-例如,一个系统可能更新所有移动实体可以通过速度自上次更新乘以所述时间间隔的位置.
实例化系统
Unity ECS 会自动发现项目中的系统类并在运行时实例化它们。它将每个发现的系统添加到默认系统组之一。您可以使用系统属性来指定系统的父组以及该系统在组内的顺序。如果您不指定父级,Unity 会以确定性但未指定的顺序将系统添加到默认世界的模拟系统组。您还可以使用属性来禁用自动创建。
系统的更新循环由其父ComponentSystemGroup驱动。ComponentSystemGroup 本身是一种专门的系统,负责更新其子系统。组可以嵌套。系统从它们运行的世界中获取它们的时间数据;时间由UpdateWorldTimeSystem更新。
您可以使用实体调试器窗口(菜单:窗口>分析>实体调试器)查看系统配置。
系统类型
Unity ECS 提供了多种类型的系统。通常,您编写的用于实现游戏行为和数据转换的系统将扩展SystemBase。其他系统类有专门的用途。您通常使用EntityCommandBufferSystem和ComponentSystemGroup类的现有实例。
- SystemBase——创建系统时要实现的基类。
- EntityCommandBufferSystem --为其他系统提供EntityCommandBuffer实例。每个默认系统组在其子系统列表的开头和结尾处维护一个实体命令缓冲区系统。这允许您对结构更改进行分组,以便它们在帧中产生较少的同步点。
- ComponentSystemGroup——为其他系统提供嵌套组织和更新顺序。Unity ECS 默认创建多个组件系统组。
- GameObjectConversionSystem -- 将游戏的基于游戏对象的编辑器内表示转换为高效的、基于实体的运行时表示。游戏转换系统在 Unity 编辑器中运行。
重要提示:本ComponentSystem和JobComponentSystem类,随着IJobForEach,被淘汰的DOTS API,但都没有得到官方还没有过时。改用SystemBase和Entities.ForEach。