第四站:选择的力量
在上一站,我们的世界学会了“记忆”。但目前,这份记忆是静态的。玩家无论做什么,都无法改变“没有钥匙”这个事实。
现在,我们将赋予玩家真正的力量。我们将学习如何通过 动作 (Actions),让玩家的每一次选择,都能切实地改变故事的状态,重塑世界的记忆。
赋予选择“力量”:actions 属性
我们如何让一个选择拥有力量呢?答案是在链接(Link)中添加一个名为 "actions" 的属性。
"actions" 是一个数组 [ ],里面可以存放一个或多个“动作”对象 { }。当玩家点击这个链接时,这里面的所有动作就会被依次执行。
最常用的动作之一,就是 set 动作。它的作用是:设置 (set) 一个变量的值。
让我们来改造一下 check_desk 节点。我们不再让它直接显示状态,而是给玩家一个新的选择:“拿起书本”。当玩家做出这个选择时,我们假设书下藏着一把钥匙。
"check_desk": {
"text": "你走向桌子,上面放着一盏熄灭的油灯和一本合上的旧书。你决定 {0},或者 {1}。",
"links": [
{
"text": "拿起书本",
"target": "found_key",
"actions": [
{
"type": "set",
"target": "var.player.hasKey",
"value": true
}
]
},
{
"text": "先不管它",
"target": "start"
}
]
}让我们来解读第一个链接中的 actions 魔法:
"type": "set": 我们要执行一个“设置”类型的动作。"target": "var.player.hasKey": 我们要设置的目标是player.hasKey这个变量。"value": true: 我们要把它设置成新值true。
当玩家点击 {0}(“拿起书本”)时,这个 set 动作会在跳转到新场景之前立刻执行,将 var.player.hasKey 的值从 false 改为 true。
见证世界的改变
为了能清楚地看到世界的变化,我们需要创建一个新的场景 found_key,让它来显示我们改变后的记忆。
现在,让我们把完整的 common/data.json 整合起来:
{
"metadata": {
"indexNode": "start"
},
"variables": {
"player": {
"hasKey": false
}
},
"nodes": {
"start": {
"text": "你在一间安静的房间里醒来,阳光透过窗帘的缝隙洒在地板上。你决定 {0} 还是 {1}?",
"links": [
{ "text": "查看窗外", "target": "look_outside" },
{ "text": "检查床边的桌子", "target": "check_desk" }
]
},
"look_outside": {
"text": "你拉开窗帘,外面是一片宁静的森林,薄雾弥漫在树林间。\n\n{0}",
"links": [
{ "text": "回到房间中央", "target": "start" }
]
},
"check_desk": {
"text": "你走向桌子,上面放着一盏熄灭的油灯和一本合上的旧书。你决定 {0},或者 {1}。",
"links": [
{
"text": "拿起书本",
"target": "found_key",
"actions": [
{ "type": "set", "target": "var.player.hasKey", "value": true }
]
},
{ "text": "先不管它", "target": "start" }
]
},
"found_key": {
"text": "你拿起了书,发现书下压着一枚小小的黄铜钥匙。\n\n当前钥匙状态:{var.player.hasKey}\n\n{0}",
"links": [
{ "text": "回到房间中央", "target": "start" }
]
}
}
}现在,整个流程是这样的:
- 玩家在
check_desk场景选择{0}(“拿起书本”)。 set动作立刻执行,将var.player.hasKey的值变为true。- 故事跳转到
found_key场景。 found_key场景的文本显示出来,此时{var.player.hasKey}会被解析为最新的值true。玩家将看到:“当前钥匙状态:true”。
💪 你已掌握改变世界的力量!
太棒了!您已经掌握了互动叙事中最核心、最激动人心的部分:通过玩家的选择来驱动故事状态的变化。
现在,我们的故事不再是简单的“看”,而是真正的“玩”。但还有一个问题:即使我们没有钥匙,一扇需要钥匙的门可能依然为我们敞开。如何让世界根据它拥有的记忆,来做出不同的反应呢?
这就是我们旅途的最后一站,我们将学习如何创造“条件”,打开那扇只为有缘人准备的秘密之门。
下一站: 第五步:打开秘密之门