У меня есть простая аркадная игра с игроком и несколькими врагами. Я написал игру, что, когда все враги мертвы, уровень заканчивается. Я отслеживаю врагов bu, имеющих центральный GameplayController, у которого есть статический int, называемый количеством врагов. Я увеличиваю это значение с помощью активного метода скрипта, прикрепленного к каждому из объектов моего врага, и когда и враг умирает, я вызываю метод к этому контроллеру игрового процесса с именем CountEnemies, который уменьшает эту переменную, и если она равна нулю, заканчивается уровень.Unity3d иногда состояние окончания игры не срабатывает
Вот код моего CountEnemies methid называется классом врагов:
GameplayController.instance.CountEnemies();
где экземпляр просто возвращает одноэлементный экземпляр GameplayController.
Вот код моего метода CountEnemies:
Debug.Log("Inside Count Enemies");
Debug.Log("Count Enemies before: " + enemiesCount);
enemiesCount--;
Debug.Log("Count Enemies after: " + enemiesCount);
if (enemiesCount == 0)
{
Debug.Log("Enemy Count is equal to zero");
//Complete Level
}
Debug.Log("End Count Enemies");
Теперь вопрос он используется для работы в большинстве случаев. Но случайным образом, в какой-то момент, когда я пытаюсь запустить его на мобильном устройстве, он не может завершить уровень. Я много раз пытался диагностировать проблему, но каждый раз, когда я запускаю ее на ПК, кажется, что она работает безупречно и безотказно даже в редких случаях, когда она вызывала проблему, все, что я мог обнаружить, это то, что, несмотря на то, что CountEnemies вызывали на каждом шагу, по какой-то странной причине переменная счетчика врагов, кажется, не уменьшилась или, возможно, была увеличена.
Я отслеживаю код через видеокарту Visual Studio и ссылки, и только вместо метода Awake я увеличиваю переменную. Пожалуйста, помогите мне разобраться в этом или по крайней мере предложить мне, как его отлаживать, как всякий раз, когда значение этой переменной обновляет прикрепленный отладчик, позволяет мне знать или что-то в этом роде.
Когда метод вызван? Это когда враг убивается в методе OnDeath()? – Chad