Schedule 与执行顺序
前几章一直在小心绕开同一个问题。第 3 章说“不加约束时,同一调度里的系统没有固定执行顺序”;第 5 章摊主的双倍卡何时生效,取决于他排在射手前面还是后面——每一次,我们都用一句 .chain() 草草脱身。这一章正面回答:系统到底什么时候跑、按什么顺序跑。 这是 Bevy 程序一切运行行为的根源。
答案分两层。宏观层面,一帧之内 Schedule 一个接一个地跑:Startup 全家只在开场跑一次,Update 全家每帧轮转,还有一位按自己的时钟行事的 FixedUpdate。微观层面,同一调度内部系统默认无序,你有三件工具管住它们:排序(chain/before/after)、分组(SystemSet)、条件(run_if)。最后清算贯穿前几章的悬案——Commands 攒下的命令究竟在哪一刻落地。
读完本章,第 3 章那张“何时生效”的表格将不再有任何神秘成分。