在 Gamemaker 中从 JSON 文件访问对象数据时遇到问题

问题描述 投票:0回答:1

我在访问游戏的 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 上。预先感谢!

json object types accessor game-maker
1个回答
0
投票

尝试在调试模式下运行游戏,并在弹出错误时检查变量是什么 - 也许

npcName
currGameState
不符合你的想法(并注意变量和结构键都是区分大小写的).

© www.soinside.com 2019 - 2024. All rights reserved.