2013-03-16 3 views
2

У меня есть проблема ...Unity3D - Проблемы после перезагрузки сцены через Application.LoadLevel

Есть четыре сцены в моей игре: вводная сцена, сцена для выбора игроков, реальная игра сцена, и игра над сценой.

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

Application.LoadLevel("Let's play the game!") 

Это, как я покидаю эту сцену:

if(GUI.Button (new Rect (x, y, w, h), "Quit", buttonStyle)) 
{ 
    Application.Quit(); 
    Application.LoadLevel("Opening Screen"); 
} 

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

Более серьезные проблемы с GameObjects, которые были динамически загружены. Я получаю «GameObject» был уничтожен, но вы все еще пытаетесь получить к нему доступ ». Я не уверен, откуда это происходит, поскольку я не вижу, где я раньше назывался «Destroy». Кроме того, объекты, динамически созданные, появляются в иерархии, когда я запускаю приложение внутри Unity.

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

У кого-нибудь есть рекомендации?

ответ

3

Это звучит, как вам нужно, чтобы убедиться, чтобы позвонить DontDestroyOnLoad сохранить свой объект в памяти между нагрузками на уровне:

DontDestroyOnLoad(gameObjectToPreserve); 

Кроме того, следующий код из вашего примера будет бросить ваше приложение, прежде чем он может загрузить ваш " Открытие экрана ":

if(GUI.Button (new Rect (x, y, w, h), "Quit", buttonStyle)) 
{ 
    Application.Quit(); 
    Application.LoadLevel("Opening Screen"); 
} 

Удалить строку„Application.Quit()“, если вы намерены вернуться к экрану открытия. Вы не увидите эту проблему в режиме предварительного просмотра редактора, потому что Application.Quit() ничего там не делает.

+0

Да, удалите Application.Quit(); Это фактически закроет вашу игру за пределами редактора Unity. – 2013-03-17 08:12:31

+0

Вы, ребята, быстры! Спасибо за предупреждение относительно Application.Quit(). Я начал комментировать кучу исходного кода и изолировал свою проблему. Моя камера GameObject связана со сценарием, который терпит неудачу, когда нужный уровень перезагружается. По-видимому, эта ошибка вызвала эффект поезда на всем уровне. –

+0

Я все исправил. Мне удалось найти несколько областей, в которых отсутствует проверка на объектах. Это устранение «GameObject» было уничтожено, но вы все еще пытаетесь получить к нему доступ ». Что касается камеры, у меня есть вопрос: звонки в GUI. * Ограничены только внутри OnGUI()? Я делаю вызовы внутри OnGUI(), который ссылается на GUI.Button, GUI.Labels и т. Д. Когда все вызовы GUI. * Были сделаны внутри OnGUI(), камера аномально исчезла. –

Смежные вопросы