【问题标题】:GML Alarm event not working second timeGML 警报事件第二次不起作用
【发布时间】:2016-06-04 06:37:44
【问题描述】:

我的游戏设置为启动并返回加载屏幕房间 45 步,然后随机进入下一个房间。所以在alarm[0]下面的代码激活:

randomize();
chosenRoom = choose(rm_roomOne, rm_roomTwo, rm_roomThree, rm_roomFour);
room_goto(chosenRoom);

这里的代码第一次运行良好,但是当它从随机选择的房间返回到加载屏幕房间时,它停留在那里并且不再执行代码。

非常感谢任何帮助。

【问题讨论】:

  • 如何调用警报[0]?你在什么情况下启动它?
  • 我只是在一个控制对象中添加了警报事件。它在 create 事件中将 alarm[0] 设置为 45,然后在 alarm[0] 事件中它执行上面的代码段(好吧只是第一次)。所以它几乎是 loadingRoom -> 执行代码 -> randomRoom -> loadingRoom -> 停止

标签: gml


【解决方案1】:

这听起来可能很愚蠢,但您是否记得在闹钟响起后再次设置闹钟?我知道我已经不假思索地做了好几次。在没有看到您的代码的情况下,我假设闹钟响起后不会再次设置,因此不会再次响起。

【讨论】:

    【解决方案2】:

    我猜控制对象是“持久的”,因此控制对象只存在一次并且将永远存在(也在切换房间之后) - 因此创建事件只被触发一次 - 因此警报只被设置一次。

    尝试将您的代码移动到控制器中的“房间启动”事件中,它会起作用。

    【讨论】:

      【解决方案3】:

      您可以使用event_perform(ev_alarm,0);
      此处的代码在 45 步后执行 alarm[0]。再次经过 45 步后,它会触发警报 [0]。请注意,您必须将其放在步骤事件中。并且您必须在创建事件中将等待变量和时间初始化为零。 times 是重复,wait 是事件之间的距离。

      if(wait == 45 && times !=2){
          event_perform(ev_alarm,0);
          times++;
          wait = 0; 
      }
      else{
          wait++;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 2012-08-14
        • 2015-02-02
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        • 1970-01-01
        相关资源
        最近更新 更多