как перенести поплавок из одной сцены в другую - PullRequest
0 голосов
/ 06 мая 2020

Привет, я делаю шутер fps с единством 3d, и я пытаюсь добавить систему игровой валюты, но для этого мне нужно передать поплавок, называемый монетами, который находится в сценарии движения моих игроков из сцены уровня в сцену магазина, чтобы его можно было потратить и отобразить на экране в виде пользовательского интерфейса. Кто-нибудь знает, как я могу это сделать, большое спасибо за вашу помощь?

1 Ответ

1 голос
/ 06 мая 2020

Не храните переменные в скриптах, которым они не принадлежат. Есть несколько решений этой проблемы:

  1. Вариант - создать ScriptableObject, содержащий переменные, которые необходимо передать. Он создается вами в редакторе, а затем назначается в качестве актива префабу вашего плеера. Вместо того, чтобы устанавливать переменную в самом проигрывателе, он просто устанавливает переменную в этом хранилище.
    Это хранилище может быть любым, от одной переменной ( см. Это видео для справки ) до больших систем, таких как Unitys Система тайловых карт .
  2. Вы создаете компонент, который прикрепляется к игровому объекту, находящемуся в сцене «Не уничтожать при загрузке». Это можно сделать, создав сценарий моноповедения и вызвав DontDestroyOnLoad(gameObject) в его методе Start. Кроме того, вы можете сделать его синглтоном и получать к нему доступ отовсюду. Для справки см. этот ответ из stackexchange разработчиков игры.

Честно говоря, я всегда стараюсь go с первым. Если вы хотите, чтобы некоторые переменные сохранялись в «игровом состоянии» (так оно называется в Unreal), вы создаете их извне и ссылаетесь на них в течение всего сеанса. На самом деле существует множество ситуационных подходов, и нет правильного или неправильного, но вы всегда должны помнить, что класс должен служить только одной цели и сценарий игрока, который перемещает игрока и сохраняет текущую статистику (которая должна жить длиннее самого плеера) обычно плохой подход.

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