Flag & Jump
flag 标志是一些特殊的脚本节点,在控制流中起到跳转锚点的作用。
在剧本中,可以通过 jump 指令跳转到指定标志位(能跨越文件!)。
flag("start"); // 指令 1
me `unlimited loop work` // 指令 2(语段)SomeBody.enter(); // 指令 2(语段)
jump("start"); // 指令 3在上面的示例中,jump 指令会跳转到 flag("start") 所在的语段。
完整的执行顺序如下:
-
执行
flag指令(什么事都没有发生)由于
flag是一个不阻塞的指令,因此自动执行下一个指令。 -
执行语段(播放文字和动画)
由于语段是阻塞的指令,因此暂停执行,等待玩家按下鼠标。
-
执行
jump指令跳转到
flag("start")位置,并继续执行,直到遇到语段。
一个更容易理解的示例如下:
flag("start1");flag("start2");flag("start3");flag("start4");flag("start5");
me`unlimited loop work`;SomeBody.enter();
jump("start1");每次点击鼠标后,总是执行一次语段,并在语段处停下,等待下一次鼠标按下。
看看如何更方便的编写剧本。
有些时候,为了更好的排布剧本,我们可以把 flag 以及其后的部分设计成一个单独的“模块”。
flag("before dead"); // 跳转进入
me.enter();// ...
jump("alive"); // 跳转到外部有时,我们会将大量的语句混在一起,而无法清晰的分割,考虑利用缩进来提高代码的可读性。
对每个逻辑段落使用 {} 包裹,并记得使用 flag 和 jump 来控制流。
flag("before dead");{ me.enter(); // ...
jump("alive");}
flag("before alive");{ me.enter(); // ...
jump("say something");}