更新周期 - ReiKohaku/Sonolus-wiki-zh_cn GitHub Wiki
更新周期
一帧和下一帧之间的时间段称为一个更新周期。
在每个周期中,系统按照顺序执行,通过回调函数可以实现更为复杂的行为。
生成系统
生成系统处理新实体的生成。 生成系统有两个子系统:一个用于生成关卡数据中的实体,另一个通过调用Spawn函数来生成实体。
关卡数据中的实体
在关卡开始时,生成索引将被初始化为0。
系统将调用生成索引指向的实体的shouldSpawn函数来决定该实体是否进行生成。如果实体的shouldSpawn返回值为真或不存在,则实体将通过生成检查。 如果实体通过了生成检查,它将被生成,并且生成索引的值增加1。 系统将重复该过程,直到一个实体未能通过生成检查,或是到达了实体列表的末尾。
Spawn函数中的实体
系统将简单地按顺序生成Spawn函数调用的生成队列中的所有实体。
初始化系统
初始化系统处理新生成实体的初始化。
系统以并行的方式循环此帧中生成的所有实体。 对每个实体都将调用initialize函数。
顺序更新系统
顺序更新系统按顺序处理活动实体的更新。
系统按生成顺序遍历所有的活动实体。 对每个实体都将调用updateSequential函数。 如果updateSequential返回真,则实体将被放入销毁队列。
输入系统
输入系统为活动实体处理用户的输入。
系统按照生成顺序遍历所有活动实体。 对每个实体都将调用touch函数。
并行更新系统
并行更新系统用于并行地更新活动实体。
系统以并行的方式遍历所有活动实体。 对于每个实体,都将调用updateParallel函数。 如果updateParallel函数返回了一个真值,实体将会被放入销毁队列中。
销毁系统
销毁系统处理实体的销毁。
渲染、音频和粒子系统
渲染、音频和粒子系统处理循环期间的所有Draw、Play、SpawnParticleEffect、MoveParticleEffect、DestroyParticleEffect函数调用。