using System; using UnityEngine; using UnityEngine.SceneManagement; public class LevelChanger : MonoBehaviour { [SerializeField] public Animator _animator; private const string FADE_OUT = "FadeOut"; private const string FADE_IN = "FadeIn"; private string _sceneToLoad; private Action _onSceneLoaded; private void Start() { UnityEngine.SceneManagement.SceneManager.sceneLoaded += SceneLoaded; } private void SceneLoaded(Scene arg0, LoadSceneMode arg1) { _animator.SetTrigger(FADE_IN); } public void FadeIn(Action onSceneLoaded) { _onSceneLoaded = onSceneLoaded; _animator.SetTrigger(FADE_IN); } public void FadeToLevel(string name, Action onSceneLoaded) { _sceneToLoad = name; _onSceneLoaded = onSceneLoaded; _animator.SetTrigger(FADE_OUT); } public void OnFadeInComplete() { _onSceneLoaded.Invoke(); } public void OnFadeOutComplete() { UnityEngine.SceneManagement.SceneManager.LoadScene(_sceneToLoad); } }