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;
}
Теперь, если вы хотите сохранить его, вам нужно использовать файловые функции, это другой вопрос.