节点中的控制流
Mortar 现在支持在节点内部使用 if/else,用于根据变量、函数或枚举判断来显示不同文本。功能刻意保持轻量——暂不包含循环——以保证脚本可读性。
基本语法
let player_score: Number = 123
node ExampleNode {
if player_score > 100 {
text: "满分!"
} else {
text: "你还得加把劲。"
}
}
每个分支都可以包含任意节点语句:文本、赋值、选项甚至嵌套 if。序列化后会被折叠成带 condition 字段的 content 项,游戏端只需解析即可。
支持的表达式
可以比较数字、判断布尔值,也可以调用无参数函数:
if has_map() && current_region == forest {
text: "你摊开地图,研究下一步的路线。"
}
表达式会被解析成 AST(双目运算、单目运算、标识符或字面量)。当条件依赖游戏端数据时,可通过 fn has_map() -> Bool 由运行时代码来提供结果。
最佳实践
后续版本计划引入 while 等语句,但当前的 if/else 已足以覆盖大多数动态文本场景,并保持 Mortar 的简洁特性。