Game Maker Studio Score, My Score сбрасывается при переходе в следующую комнату

У меня проблема с оценками в моей игре, моя игра заключается в том, чтобы отвечать на вопросы, используя перемешанные буквы, и когда игрок получает один правильный ответ, игра должна добавить +1 к игровому счету и перейти на следующий уровень (который является в следующей комнате) и создаст другой вопрос и сохранит ваш последний балл, равный 1. Моя проблема в том, что счет просто сбрасывается до значения 0 при перемещении в следующую комнату. Я хочу, чтобы это постоянно добавляло +1, даже когда я иду в следующие комнаты. Заранее спасибо.

2 ответа

Есть много решений.
1) Установите свой объект контроллера счета как постоянный
стойкий
Это лучшее, так как вам больше ничего не нужно делать, и на самом деле это хорошее правило - иметь один объект в качестве постоянного контроллера.

2) Вы можете сохранить свой счет в файл и загружать его каждый раз, когда создается этот объект (который хранит переменную)
Это требует манипулирования сохранением \ загрузкой, и в некоторых случаях (например, вы не хотите иметь ЛЮБЫХ постоянных объектов) может быть лучше, но я сильно сомневаюсь.

Вы не даете достаточно информации о том, как вы сохраняете значение балла.

Это может быть вызвано многими проблемами в процессе создания игры, поэтому я постараюсь дать все решения для всех возможных сценариев:

1) Хранение баллов в переменной объекта

Таким образом, могут быть два разных сценария:

а) Переход к следующей комнате после правильного ответа

б) Перезагрузите ту же комнату

Это полностью сбрасывает переменную объекта, потому что объект уничтожается, а затем создается снова, снова инициируя переменные, которые он содержит при создании комнаты.

Для этого решение простое: установите постоянное значение true, вы можете сделать это из свойств объекта формы (интерфейс, который появляется при открытии объекта) или с помощью gml для события create объекта:

объект: СОЗДАТЬ событие

persistent = true;

Это создаст объект, даже если он повторяется в комнате, созданной для no, чтобы создать его снова, поэтому событие CREATE больше никогда не повторится.

2) Сохранение баллов в переменной комнаты, используя событие создания комнаты

В этом сценарии происходит то же самое, что и выше, это просто локальная переменная комнаты, но она существует только для комнаты и будет существовать только во время комнаты до ее перезапуска или выхода.

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

global.points = 0;

И это лучший способ сохранить счет для вашей игры.

Просто помните "нет", чтобы поместить его в событие создания непостоянного объекта, иначе он будет сброшен в НОЛЬ для всего, что этот объект создан.

В этом случае вы можете проверить, существует ли переменная, а затем, если она не инициализируется:

if (variable_global_exists("points") == true) {
    global.points = 0;
}

Теперь, если вы хотите сохранить его, вам нужно использовать файловые функции, это другой вопрос.