更新周期 - ReiKohaku/Sonolus-wiki-zh_cn GitHub Wiki

更新周期

一帧和下一帧之间的时间段称为一个更新周期

在每个周期中,系统按照顺序执行,通过回调函数可以实现更为复杂的行为。

生成系统

生成系统处理新实体的生成。 生成系统有两个子系统:一个用于生成关卡数据中的实体,另一个通过调用Spawn函数来生成实体。

关卡数据中的实体

在关卡开始时,生成索引将被初始化为0。

系统将调用生成索引指向的实体的shouldSpawn函数来决定该实体是否进行生成。如果实体的shouldSpawn返回值为真或不存在,则实体将通过生成检查。 如果实体通过了生成检查,它将被生成,并且生成索引的值增加1。 系统将重复该过程,直到一个实体未能通过生成检查,或是到达了实体列表的末尾。

Spawn函数中的实体

系统将简单地按顺序生成Spawn函数调用的生成队列中的所有实体。

初始化系统

初始化系统处理新生成实体的初始化。

系统以并行的方式循环此帧中生成的所有实体。 对每个实体都将调用initialize函数。

顺序更新系统

顺序更新系统按顺序处理活动实体的更新。

系统按生成顺序遍历所有的活动实体。 对每个实体都将调用updateSequential函数。 如果updateSequential返回真,则实体将被放入销毁队列。

输入系统

输入系统为活动实体处理用户的输入。

系统按照生成顺序遍历所有活动实体。 对每个实体都将调用touch函数。

并行更新系统

并行更新系统用于并行地更新活动实体。

系统以并行的方式遍历所有活动实体。 对于每个实体,都将调用updateParallel函数。 如果updateParallel函数返回了一个真值,实体将会被放入销毁队列中。

销毁系统

销毁系统处理实体的销毁。

渲染、音频和粒子系统

渲染、音频和粒子系统处理循环期间的所有DrawPlaySpawnParticleEffectMoveParticleEffectDestroyParticleEffect函数调用。