我在访问游戏的 JSON 数据时遇到问题。基本上,我正在尝试提取这些数据以用作对话。下面是 JSON 代码的(相关)片段:
{
"actOne" : {
"foxA" : {
"gameStateA" : [
"Oh hi",
"So you must be the new fox in town",
"I'm Beatrice. Not Bea. Beatrice. what's your favorite color?"
{
"optionA" : ["Red obvi", 0],
"optionB" : ["Black like my heart", 1],
"optionC" : ["Gray like my morals", 2]
}
]
}
}
}
这是我在 STEP 中用来访问它的代码:
currDialogue = jsonParsed.actOne[$ npcName][$ currGameState]
其中 currDialogue 是一个数组(在 Create 中声明),并进行迭代以将文本绘制到屏幕上,而 jsonParsed 当然是解析后的 JSON 字符串。 npcName 和 currGameState 都是在 Create 中声明的 obj 变量,在这种情况下,它们当前分别被硬编码为“foxA”和“gameStateA”。
所以,上面的代码不起作用。我收到此错误:
############################################################################################ERROR inaction number 1of Step Event0for object obj_dialogue:
variable_struct_get argument 1 incorrect type (undefined) expecting a Number (YYGI32)at gml_Object_obj_dialogue_Step_0 (line 8) - currDialogue = jsonParsed.actOne[$ npcName][$ currGameState];############################################################################################gml_Object_obj_dialogue_Step_0 (line 8)
然而,真正奇怪的是这些代码行确实有效:
currDialogue = jsonParsed.actOne.foxA[$ currGameState]
和
currDialogue = jsonParsed.actOne.foxA.gameStateA
所以我确信我正在正确访问 JSON 文件,并且当我使用 .访问器正在工作。但是,我不能像这样硬编码它,因为这些变量需要根据您正在交谈的 NPC、游戏状态等进行更改。我在使用模板字符串访问器 [$ ] 时的语法是否有问题?
我完全不知道为什么这不起作用,所以任何帮助将不胜感激。顺便说一句,在 MacOS 上。预先感谢!
尝试在调试模式下运行游戏,并在弹出错误时检查变量是什么 - 也许
npcName
或 currGameState
不符合你的想法(并注意变量和结构键都是区分大小写的).