Как я могу получить доступ к компонентам объекта из другой сцены? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть PlayerObject, в котором есть скрипт, в котором хранятся некоторые переменные.Я создал сцену, которая действует как главное меню и содержит часть «Магазин», в которой есть обновления, в основном мне нужно получить доступ к сценарию Player gameObject из другой сцены, чтобы я мог изменять переменные из сцены главного меню.Как я могу это сделать ?

Ответы [ 3 ]

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

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

Если в данный момент загружен GameObject с этим скриптом, вы можете использовать: https://docs.unity3d.com/ScriptReference/Object.FindObjectsOfType.html

или даже лучше

использовать шаблон синглтон-дизайна, если у вас только 1 игрок

Полагаю, вы хотите сохранить эти обновления для следующего запуска игры, поэтому вы можете использовать PlayerPrefs https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

Если вы хотите сохранить более 50 значенийДанные, которые я хотел бы предложить использовать файловую БД, такую ​​как SQLite, занимают мало времени и очень быстро работают.И это намного более читабельно, чем использование PlayerPrefs.

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

проверьте это:

https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html

как только ваш игрок будет загружен, он будет держать его в каждой сцене, пока вы не решите выпустить hiim, то есть, когда вы загрузите сцену меню, он будетбыть там для доступа.

Теперь, так как мы знаем, что он там, мы можем: (обратите внимание, что игрок - это ваш скрипт с переменными, а не ваш фактический игрок)

ScriptName player = GameObject.FindObjectWithTag("yourtag").GetComponent<ScriptName>();
0 голосов
/ 19 сентября 2018

Как насчет статического класса?

Вы можете хранить там значения и получать к ним доступ из любого места: D

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