Unity 5 C # - Как изменить сцены и импортировать все ресурсы из последней сцены - PullRequest
0 голосов
/ 12 сентября 2018

Я не уверен, как переключать сцены и брать с собой все свои ресурсы.Я понимаю, что при загрузке новой сцены предыдущая сцена разрушается при загрузке.Я изучил некоторые с DontDestroyOnLoad (), но мне не повезло с тем, что я пытаюсь сделать.

Я попытался сделать свой контроллер игрока заранее приготовленным и просто перенести его в следующую сцену;однако я возвратил кучу ошибок из-за большого количества скриптов, которые у меня есть.В основном такие вещи, как контрольно-пропускной пункт, бары HP и даже оружие.

Что мне нужно знать, это как импортировать все в следующую сцену.Как мне сделать это без необходимости перекодировать или даже заново делать все, что мне нужно?

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

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

DontDestoryOnLoad

должен выполнить то, что вы хотите, но вы говорите, что нет. До тех пор, пока объект, содержащий компоненты, состояния которых вы хотите сохранить, сохраняется в следующей сцене с использованием этого метода, все состояния этих компонентов также должны сохраняться. Пожалуйста, опишите подробно, и мы можем дать лучший ответ. Что касается того, как использовать его для сохранения состояния каждого игрового объекта:

GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType<GameObject>();
foreach(GameObject go in allObjects) {
   if (go.activeInHierarchy) { /* and any other logic you want. Maybe like !isTerrain */
      Object.DontDestroyOnLoad(go);
   }
}

Для приведенного выше кода я скопировал его с https://answers.unity.com/questions/329395/how-to-get-all-gameobjects-in-scene.html

0 голосов
/ 12 сентября 2018

Вы ищете LoadSceneMode.Additive . Это второй параметр метода LoadScene, который загружает новую сцену в текущую.

0 голосов
/ 12 сентября 2018

Если вам нужно импортировать каждый объект из предыдущей сцены, то какой смысл создавать новый?

Что вы можете сделать, это сохранить позиции объектов в файл, а затем загрузить этот файл обратно на следующую сцену или попробовать (снова) с помощью DontDestroyOnLoad ();

Рекомендую проверить документацию Unity о этой функции .

Если вы хотите, чтобы отдельный объект не был уничтожен при смене сцены, то с помощью функции void Awake () Unity создайте DontDestroyOnLoad (this.gameObject);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...