В Unity есть несколько способов определить, что сцена успешно загружена и можно отключать анимацию загрузки. Вот несколько из них:
1. Использование событий:
- Создайте пустой GameObject в вашей сцене с загрузочной анимацией, например, "LoadingAnimation".
- Привяжите к нему скрипт "LoadingAnimationController".
- В скрипте "LoadingAnimationController" определите и вызывайте событие, когда сцена успешно загружена:
using UnityEngine; using UnityEngine.SceneManagement; public class LoadingAnimationController : MonoBehaviour { public delegate void SceneLoadedEventHandler(); public static event SceneLoadedEventHandler OnSceneLoaded; private void Start() { // Загружаем вашу сцену SceneManager.LoadScene("YourSceneName"); } private void Update() { // Проверяем, что сцена загружена и анимация может быть отключена if (SceneManager.GetActiveScene().name == "YourSceneName" && OnSceneLoaded != null) { OnSceneLoaded.Invoke(); } } }
- Теперь вы можете отслеживать событие "OnSceneLoaded" в другом скрипте или компоненте:
using UnityEngine; public class MySceneManager : MonoBehaviour { public GameObject loadingAnimation; private void Start() { LoadingAnimationController.OnSceneLoaded += OnSceneLoaded; } private void OnDestroy() { LoadingAnimationController.OnSceneLoaded -= OnSceneLoaded; } private void OnSceneLoaded() { // Выключаем анимацию загрузки loadingAnimation.SetActive(false); } }
2. Использование метода Coroutine:
- В вашем скрипте загрузки создайте метод Coroutine, который будет отслеживать завершение загрузки сцены, например:
using UnityEngine; using UnityEngine.SceneManagement; public class SceneLoader : MonoBehaviour { public GameObject loadingAnimation; private void Start() { StartCoroutine(LoadSceneAsync()); } private IEnumerator LoadSceneAsync() { // Загружаем вашу сцену AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("YourSceneName"); // Ожидаем загрузку сцены while (!asyncLoad.isDone) { yield return null; } // Выключаем анимацию загрузки loadingAnimation.SetActive(false); } }
- Привяжите этот скрипт к GameObject с загрузочной анимацией, и она будет отключена после загрузки сцены.
3. Использование метода SceneManager.sceneLoaded:
- В вашем скрипте загрузки добавьте обработчик события "SceneManager.sceneLoaded", который будет вызываться после загрузки сцены:
using UnityEngine; using UnityEngine.SceneManagement; public class SceneLoader : MonoBehaviour { public GameObject loadingAnimation; private void Start() { SceneManager.sceneLoaded += OnSceneLoaded; SceneManager.LoadScene("YourSceneName"); } private void OnDestroy() { SceneManager.sceneLoaded -= OnSceneLoaded; } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { // Выключаем анимацию загрузки loadingAnimation.SetActive(false); } }
- Этот метод будет вызываться автоматически после загрузки вашей сцены, и вы сможете отключить анимацию загрузки.
Вы можете выбрать любой из этих подходов в зависимости от вашей архитектуры проекта и предпочтений.