我想指出,我基本上没有处理 JSON 文件或 JavaScript 的经验,所以我并不惊讶自己遇到了一些问题 lol。
基本上,我正在尝试修复一个对话系统,最初是从教程中获取的,因为原始实现把所有对话都放在一个巨大的 switch 语句中,这我听说是非常不好的主意(可能还会让本地化到其他语言变得很困难)。所以我改成了为需要的对话流查找对应的 JSON 文件并使用 json_parse() 进行解析。
我的目标是让 GameMaker 读取 JSON 文件并识别其中的数组,数组里包含一个字符串(对话内容),另一个字符串(显示的字符头像,如果为空则不显示),以及一个数字(头像索引),之后我会编写代码将这些值应用到相应的变量上。目前我只是想确认自己了解 json_parse() 的工作方式以及能对其进行的操作。
问题是,每次游戏尝试解析我设置的 JSON 文件时,程序都会崩溃,并报错 "JSON parse error : unexpected character"。虽然它会提示有 "unexpected character",但并没有指明具体是哪个字符出现了问题,只能看到是 json_parse() 加载的那个文件。
我已经从昨天开始研究这个问题(几乎整个时间都在试图解决它),多次查找相关信息,阅读了它引导我的其他帖子,尝试找出是否有特定的格式规则我可能违反了,甚至翻遍了大量的 JavaScript 贴论,但都没有解决问题。
我找到了一个叫做 JSHint 的网站,它指出了一些问题,我进行了修正并再次尝试,但仍然得到相同的错误。现在我甚至不确定到底发生了什么,于是决定发帖求助,看看有没有人能提供具体的帮助。
这是我的 JSON 文件内容:
{
"array": {
"type": "array",
"items": {
"0":{
"type": "array",
"items": {
"text": "Sphinx of black quartz, judge my vow!",
"txt_sprite": "",
"txt_sprite_index": 0 }},
"1":{
"type": "array",
"items": {
"text": "...Actually, I didn't make a vow...",
"txt_sprite": "",
"txt_sprite_index": 0 }}
}
}
}
而运行它的代码仅是:
if file_exists(text_id) {
json = json_parse(text_id);
} else {
script_text("Hi, my name is Place Holdington!");
};
text_id 只是一个字符串,指定要加载的具体 JSON 文件。 Gamemaker 似乎能识别文件存在,因为 placeholder 文本不报错,而解析 JSON 时却报错。
可能是 JSON 的格式问题,但既然 JSHint 在我清理后没有报错,我相当确定是 GameMaker 读取 JSON 文件的方式出了问题。
cualquier ayuda será apreciada!
评论 (0)