private IEnumerator LoadLoadingScene(SceneNameList.SceneNameHolder sceneName){ if(string.IsNullOrEmpty(sceneName.loadingSceneName)) yield break; this.status = Status.Prepare; Debug.Log(sceneName.loadingSceneName); this.loadOperation = sceneName.isAdditiveLoading ? SceneManager.LoadSceneAsync(sceneName.loadingSceneName,LoadSceneMode.Additive) : SceneManager.LoadSceneAsync(sceneName.loadingSceneName,LoadSceneMode.Single); yield return this.loadOperation; while(this.status == Status.Prepare){ yield return null; } }
static void CreateSceneList() { //資料 Asset 路徑 string holderAssetPath = "Assets/Settings/"; if (!Directory.Exists(holderAssetPath)) { Directory.CreateDirectory(holderAssetPath); } //建立實體 SceneNameList holder = ScriptableObject.CreateInstance <SceneNameList> (); //使用 holder 建立名為 dataHolder.asset 的資源 AssetDatabase.CreateAsset(holder, holderAssetPath + "SceneList.asset"); }
private IEnumerator LoadTargetScene(SceneNameList.SceneNameHolder sceneName){ this.status = Status.Loading; if(string.IsNullOrEmpty(sceneName.sceneName)){ this.status = Status.None; yield break; } this.loadOperation = SceneManager.LoadSceneAsync(sceneName.sceneName,LoadSceneMode.Single); yield return this.loadOperation; this.status = Status.Complete; }
private IEnumerator AsyncLoadScene(SceneNameList.SceneNameHolder sceneName){ // Debug.Log("Start"); yield return StartCoroutine(this.LoadLoadingScene(sceneName)); yield return StartCoroutine(this.LoadTargetScene(sceneName)); }