Как загрузить сцену, при этом не делая ее основной, но имея возможность взаимодействовать с ее объектами, скриптами?
У меня есть загрузочный экран(loading scene) и главный экран игры(main scnen). Игра начинается с загрузочного экрана. Можно ли как-то загрузить main scene в фоне и иметь возможность взаимодействовать с ее объектами и их компонентами, при этом не переходя на нее, а оставаясь на loading scene?
Ответы (2 шт):
А для чего вы это хотите сделать? Если для того, чтобы, например, выбрать оружие или транспорт для персонажа, можно сделать скрипт PlayerPrefs.
Для загрузочного экрана потребуется такой код:
[SerializeField] private int _sceneID; // Id сцены
[SerializeField] private Image _loadingCircle; // изображение, которое будет показывать загрузку
[SerializeField] private Text _text; // текст, в который будут печататься проценты загрузки
void Start()
{
StartCoroutine(AsyncLoad());
}
IEnumerator AsyncLoad()
{
AsyncOperation op = SceneManager.LoadSceneAsync(_sceneID);
while (!op.isDone)
{
float progress = op.progress / 0.9f;
_loadingCircle.fillAmount = progress;
_text.text = string.Format("{0:0}%", progress * 100);
yield return null;
}
}
Не забудьте вверху написать
using UnityEngine.UI;
using UnityEngine.SceneManagement;
Создайте отдельный Canvas, в котором будет изображение(например, круг), а также пустое текстовое поле. Далее повесьте скрипт и настройте его. не забудьте отключить его и включать при нажатии кнопок в главном меню.
На сколько я знаю, единственный способ взаимодействовать с обьектами с "другой сцены" это загрузить обьект в эту сцену, работать с ним, а потом не выгружая из памяти перейти на следующую сцену.
Для последнего используется DontDestroyOnLoad.