Как общаться между 2 сценами в Unity? - PullRequest
0 голосов
/ 25 апреля 2020

Я хотел бы создать систему цветности для своего плеера. В моей игровой сцене игрок может собирать монеты, и количество монет будет сохранено с помощью настроек игрока, но я не знаю, как я могу использовать количество монет в моей сцене меню. И мне нужна помощь для выбора цвета игрока. Когда игрок выбирает цвет, чем на моей игровой сцене, должен зацветить игрока с цветом. Так что я думаю, мне нужно знать, как общаться между двумя сценами. Может ли кто-нибудь помочь мне с некоторым учебником?

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Есть несколько способов достижения этого, которые, как мне кажется, сводятся к вкусу: сохранить данные в файл, использовать DoNotDestroyOnLoad ...

Но из того, что я понимаю, сейчас рекомендуется создайте «сцену менеджера», которая будет оставаться активной в течение всего времени жизни вашего приложения и передавать данные в и из других ваших сцен по мере их открытия и закрытия вместо использования DontDestroyOnLoad:

Рекомендуется Избегайте использования DontDestroyOnLoad для сохранения менеджера GameObjects, который вы хотите выжить при загрузке сцены. Вместо этого создайте сцену менеджера, в которой есть все ваши менеджеры, и используйте SceneManager.LoadScene (, LoadSceneMode.Additive) и SceneManager.UnloadScene для управления процессом игры. ср c

См. Руководство по Unity здесь . По сути, в любой момент вы можете открыть 2 сцены одновременно: сцену менеджера и любую активную игровую сцену. Затем вы можете общаться между сценариями в двух открытых сценах через делегатов событий. Вот как это будет работать:

  1. Игрок выбирает цвет в scene1
  2. Цвет отправляется со сцены 1 на сцену менеджера через делегата события
  3. scene1 выгружается, а scene2 - загружено
  4. Цвет отправляется со сцены менеджера в сцену2

Этот подход я использовал для проекта, который выглядит следующим образом: enter image description here

"0-Attract", "1-Sealant", "2-Paint" и "3-Заключение" - мои реальные игровые сцены, а "Scene менеджера" содержит все, что существует в любой другой сцене (таким образом, нет причин убивать и перезапускать их), а также все мои сценарии «менеджера», которые обрабатывают передачу данных между сценами.

Обратите внимание, что многостадийное редактирование может сначала сбивать с толку, так как новые вещи, на которые нужно обратить внимание (то есть, какая сцена в настоящее время «активна» и что это значит), поэтому обязательно go в руководстве по единству, которое я изложил выше. Удачи!

1 голос
/ 25 апреля 2020

Вы можете вызывать метод DontDestroyOnLoad для любого объекта, который вы хотите оставить, когда вы перемещаете новую сцену, чтобы он не был уничтожен при закрытии сцены.

...