我试图创建一个看起来记住之前对话的对话系统,但我刚刚开始就卡住了。以下是我的对话系统在脚本中的设置:

[ogm.var001, "Hello again", ogm.var000, -1],

[ogm.var000, "Hello There, It's nice to meet you", ogm.var001, 0],

[ogm.var000, "Hello, it's nice to meet you too", ogm.var000, -1]

ogm 表示我的 '游戏主管' 对象,它存储所有变量。每个数组的第一个部分检查所列变量是否为真。如果不是,会跳到下一个数组。 var000 初始为真,但 var001 初始为假。对话本身后面还有一个变量检查,这次它检查所列变量是否为假,如果是,它设置为真。这些函数的代码都在一个对话对象中,以下是它们的代码:

if(chapter[0] == false){page += 1}

if(chapter[2] == false){chapter[2] = true;}

chapter 指的是正在查看的数组,page 是一个简单的计数器。

我遇到的问题是第二行代码似乎不起作用。理想情况下,第一次与 NPC 对话时,应该看到第二和第三个结构。第二行应该使 var001 为真,这样下一次与 NPC 对话时,只会显示第一个行。

然而实际情况是你会不断看到数组 2 和 3,这表明 var001 并没有被设置为真。不能简单地硬编码:

if(chapter[2] == false and chapter[2] == ogm.var001){obj_game_master.var001 = true;}

因为这个游戏可能有数百个这样的变量。需要一种方法来在游戏主管对象中设置变量,通过类似上述的方式来引用它们。是否有助于将这些变量移动到对话对象中?是否应该在游戏主管对象中运行对话?或者我还在哪里出错了?