NarraLeaf

条件分支

用 Condition 在运行时选择分支,从单个 If/Else 到多个 ElseIf 分支与多值判断

使用 Condition 在运行时选择要执行的动作列表

import { Condition } from "narraleaf-react";

scene.action([
    Condition.If(player.equals("favoriteTea", "green"), [
        alice.say("我泡了绿茶。"),
    ]).Else([
        alice.say("我煮了咖啡。"),
    ]),
]);

一个条件可以包含一个 If、任意数量的 ElseIf,以及最后一个 Else

scene.action([
    Condition.If(player.evaluate("coins", (coins) => coins >= 100), [
        alice.say("你买得起这本珍本。"),
    ])
        .ElseIf(player.evaluate("coins", (coins) => coins >= 20), [
            alice.say("你买得起这张地图。"),
        ])
        .Else([
            alice.say("多攒些硬币再来吧。"),
        ]),
]);

读取多个值

条件依赖多个值时可直接传入函数。上下文中的 $() 用于读取已注册的命名空间

scene.action([
    Condition.If(({ $ }) => {
        const state = $("persistent:player");
        return state.get("hasKey") && state.get("coins") >= 10;
    }, [
        alice.say("大门打开了。"),
    ]),
]);

只判断一个字段时,优先使用 equalsisTrueisFalseevaluate。写法更短,也能保留字段类型

分支顺序固定。ElseIf() 必须写在 If() 后面,Else() 必须放在最后。在 Else() 后继续添加分支会抛出错误

本页目录