概要
控制流指令是与 语段(见 语段划分)相同等级的指令。
因此,所有的控制流指令 flag、jump、branch、choice,都会强制结束目前的语段。
这种截断的效果与 directive 中的 SceneBoundary 一致。
为了更好地理解控制流的机制,请先了解编译产物的结构。
在使用 build:story 完成编译后,产生的 RewriteIR 文件将只包含 控制流指令 以及 语段内容。
{ {"type": "flag", "name": "start"} // 控制流 {"text": [], "animate": [] } // 语段 {"type": "jump", "target": "start"} // 控制流}ShxNovel 的运行时 canoe 将会执行 RewriteIR 文件,并按顺序处理这些控制流指令和语段内容。
在遇到阻塞指令时,会暂停执行,等待用户输入(一般是点击鼠标)后继续执行。
- 阻塞指令:语段、
choice - 非阻塞指令:
flag、jump、branch