GMS2编码对话系统,我找不到解决方案

时间:2019-12-24 21:17:45

标签: dialog switch-statement game-maker-studio-2

问题: 触发对话框后,我希望玩家按下“ E”进入下一行对话。目前,它计算的是按下按钮的次数,但不会前进到下一行。

详细说明: 我将obj_textbox设置为每次按下“ E”和“ talking = true”时都会增加变量“ talkcount” +1。我知道这是通过绘制变量来实现的。我现在遇到的问题是使用“ talkcount”变量更改文本。我已将文本存储在脚本“ wizard_start_state”中。

当前,我的系统是这样工作的。播放器按“ E”创建一个互动式点击框。如果它与向导冲突,则会将变量“ talking”变为true。如果“ talking”为true,则将绘制文本框gui,它将从Hitbox中获取文本,而Hitbox是从向导中获取的,向导是从脚本“ wizard_start_state”中获取的。我怀疑该错误是在“ obj_textbox”和“ wizard_start_state”之间,因此我将发布该代码以及我认为可能相关的任何其他信息。

以前的尝试: 我跟踪了各种对话教程以获取线索,但是它们通常对我而言太高级了。我查看了文档,以获取有关步骤事件和脚本之间的关系的信息(我觉得这就是问题所在),但效果不佳。

相关代码: (obj_textbox)

步骤

if(instance_exists(obj_talk)){
 //get text from obj_talk
 testtext = string(obj_talk.gettext);
 //get portrait from obj_talk
 drawportrait = obj_talk.textimg;

按键E

if (object0.talking == true){  
 obj_textbox.talkcount +=1; 
  }

(脚本)向导启动状态

 if (obj_textbox.talkcount == 0){
 wizard.talktext = string("greetings pathetic chap");
 }

 if (obj_textbox.talkcount == 1){
 wizard.talktext = string("You snob");
 }

向导(对象)

 talktext = 0;

 state = wizard_start_state;


//get dialogue portrait

 portrait = spr_port_wizard1;

obj_talk(对象)

创建

gettext = string("");
textimg = false;
alarm[0] = 1;

警报

if (object0.talking == false){
instance_destroy();
}

与向导碰撞

object0.talking = true;
draw_text((x-100), (y-30), "collided On");
gettext = string(other.talktext);
textimg = other.portrait;

游戏玩家版本:v2.2.4.474 我非常疲惫和困惑。如果有任何陌生人伸出援手,我将永远感激你。谢谢!

0 个答案:

没有答案