Событие GML Alarm не работает во второй раз

Я настроил свою игру так, что она запускается и возвращается в комнату экрана загрузки на 45 шагов, после чего следующая комната выбирается случайным образом. Таким образом, при тревоге [0] активируется следующий код:

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

Код здесь работает нормально в первый раз, но когда он возвращается из случайно выбранной комнаты в комнату экрана загрузки, он остается там и больше не выполняет код.

Любая помощь будет очень высоко ценится.


gml
person SneakyBomber    schedule 04.06.2016    source источник
comment
Как вы вызываете будильник[0] ? В каком случае вы его запускаете?   -  person Rob    schedule 04.06.2016
comment
Я просто добавил тревожное событие в объект управления. Он устанавливает alarm[0] в 45 в событии create, а затем в событии alarm[0] выполняет указанный выше фрагмент кода (ну, только в первый раз). Так что в значительной степени это loadingRoom -> выполнить код -> randomRoom -> loadingRoom -> остановки   -  person SneakyBomber    schedule 07.06.2016


Ответы (3)


Это может показаться глупым, но вы не забыли снова поставить будильник после того, как он сработал? Я знаю, что делал это несколько раз, не задумываясь. Не видя вашего кода, я предполагаю, что после срабатывания будильника он больше не устанавливается, поэтому он не сработает снова.

person Treedot    schedule 08.06.2016

Я предполагаю, что объект управления является «постоянным», поэтому объект управления существует только один раз и останется навсегда (также после переключения комнат) - таким образом, событие создания запускается только один раз - поэтому сигнал тревоги устанавливается только один раз.

Попробуйте переместить свой код в событие «Room Start» в вашем контроллере, и он будет работать.

person Rob    schedule 09.06.2016

вы можете использовать event_perform(ev_alarm,0);.
Код здесь выполняет сигнал тревоги[0] после 45 шагов. после 45 шагов снова вызывает тревогу [0]. Обратите внимание, что вы должны поместить его в событие шага. И вы должны инициализировать переменную ожидания и время до нуля в событии создания. times — это повтор, а wait — расстояние между событиями.

if(wait == 45 && times !=2){
    event_perform(ev_alarm,0);
    times++;
    wait = 0; 
}
else{
    wait++;
}
person Ali Bahrami    schedule 29.07.2016