using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; namespace Scampz.GameJam { public class GameManager : MonoBehaviour { public static GameManager Instance; private LevelChanger _levelChanger; private void Awake() { if (Instance != null && Instance != this) { Destroy(this); return; } Instance = this; _levelChanger = GetComponentInChildren(); } public void LoadScene(string sceneName, Transform spawnPoint, LoadSceneMode loadSceneMode) { StartCoroutine(LoadSceneAsync(sceneName, spawnPoint, loadSceneMode)); } private IEnumerator LoadSceneAsync(string sceneName, Transform spawnPoint, LoadSceneMode loadSceneMode) { Debug.Log("Start Level Load"); yield return null; var loadSceneOperation = SceneManager.LoadSceneAsync(sceneName, loadSceneMode); loadSceneOperation.allowSceneActivation = false; while (!loadSceneOperation.isDone) { yield return null; if (loadSceneOperation.progress >= 0.9f) break; } loadSceneOperation.allowSceneActivation = true; yield return loadSceneOperation; Debug.Log("Stop Level Load"); if (SceneManager.GetActiveScene().name == sceneName) { Debug.Log("Move Player"); var player = GameObject.FindGameObjectWithTag("Player"); player.transform.position = spawnPoint.transform.position; player.transform.rotation = spawnPoint.transform.rotation; } } } }