Skip to content
控制流是非常特殊的指令,请务必仔细阅读这一章节。

概要

控制流指令是与 语段(见 语段划分)相同等级的指令。

因此,所有的控制流指令 flagjumpbranchchoice,都会强制结束目前的语段。

这种截断的效果与 directive 中的 SceneBoundary 一致。

为了更好地理解控制流的机制,请先了解编译产物的结构。

在使用 build:story 完成编译后,产生的 RewriteIR 文件将只包含 控制流指令 以及 语段内容

示例
{
{"type": "flag", "name": "start"} // 控制流
{"text": [], "animate": [] } // 语段
{"type": "jump", "target": "start"} // 控制流
}

ShxNovel 的运行时 canoe 将会执行 RewriteIR 文件,并按顺序处理这些控制流指令和语段内容。

在遇到阻塞指令时,会暂停执行,等待用户输入(一般是点击鼠标)后继续执行。

  • 阻塞指令:语段、choice
  • 非阻塞指令:flagjumpbranch