Я разрабатываю игру, используя Unity. Игра имеет один уровень и после того, как игрок побеждает/проигрывает, я просто хочу перезагрузить ту же сцену. Вот код, который я использую:Unity Application.LoadLevel замораживает игру на Android-устройстве
private void OnLevelFailed()
{
IsGameStarted = false;
Debug.Log("LEVEL FAILED");
Invoke("RestartLevel",5);
}
void RestartLevel()
{
Application.LoadLevel(Application.loadedLevelName);
}
При запуске этого кода в редакторе все кажется прекрасным, и сцена перезагружается по назначению. Однако, когда я создаю игру для Android и запускаю ее на устройстве (LG G3), игра просто замерзает. Я использовал adb logcat
, чтобы просмотреть журналы любых исключений или ошибок, если бы они были, но не повезло. Я также подозревал, что вызов Invoke
вызывает проблему и заменил ее просто вызовом метода, но это также не решило проблему.
У кого-нибудь есть идеи, почему это может случиться?
EDIT: Кажется, проблема вызвана сборкой, которую я использую, а именно ALPSVR. Это SDK виртуальной реальности, который позволяет вам иметь VR-камеры независимо от собственной реализации VR Unity (которая поддерживает некоторые устройства VR и GearVR, но не обычные устройства Android).
Я попытался уничтожить камеру VR с места, прежде чем перезагружать ее, но снова это не решило проблему. Почему некоторый объект GameObject внутри сцены не позволяет программе Application.LoadLevel работать правильно?
Ваш Time.timeScale = 0? – JeanLuc
Если вы используете Unit 4.x, вам нужен Unity Pro, иначе ALPSVR не будет работать. – Puneet
@JeanLuc, я не касался timeScale нигде внутри игры. Это может вызвать проблему? – halileohalilei