private IEnumerator ResetCurrentSceneAsyncCoroutine(string sceneName) { AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName); gameDataHolder = null; CoroutineManager.DeleteAllCoroutines("ResetCurrentSceneAsyncCoroutine"); while (!asyncOperation.isDone) { yield return(new WaitForEndOfFrame()); } if (sceneName == mainSceneName) { gameDataHolder = GameObject.FindGameObjectWithTag("Game Data Holder"); InitializeGame(); LoadData(false); } currentSceneName = sceneName; CoroutineManager.DeleteCoroutine("ResetCurrentSceneAsyncCoroutine"); }