/// <summary> /// Dos the load scene async. /// </summary> /// <returns>The load scene async.</returns> /// <param name="name">Name.</param> /// <param name="callback">Callback.</param> private static IEnumerator DoLoadSceneAsync(string name, System.Action <bool> callback) { yield return(null); #if UNITY_EDITOR yield return(SceneManager.LoadSceneAsync(name)); #else XSheet.XScene info = XSheet.Instance.GetScene(name); if (info != null) { XSheet.XPack packInfo = XSheet.Instance.GetPack(info.bundleName); switch (packInfo.locationType) { case XSheet.XLocationType.Resource: GLog.LogError("XRes.LoadSceneAsync can't load bundled scene {0} in resource!", name); break; default: yield return(XBundleManager.Instance.LoadSceneAsync(info)); break; } } else { yield return(SceneManager.LoadSceneAsync(name)); } #endif Scene scene = SceneManager.GetActiveScene(); callback(scene.name.ToLower() == name); }
private IEnumerator LoadDependenciesAsync(XSheet.XPack pack) { for (int i = 0; i < pack.dependencies.Length; i++) { XAssetBundleInfo bundleInfo = GetAssetBundleInfo(pack.dependencies[i]); if (bundleInfo != null) { if (!bundleInfo.isDone) { XCoroutine.Run(LoadAssetBundleAsync(bundleInfo, false)); } bundleInfo.AddDepended(pack.name); } } for (int i = 0; i < pack.dependencies.Length; i++) { XAssetBundleInfo bundleInfo = GetAssetBundleInfo(pack.dependencies[i]); if (bundleInfo != null) { while (bundleInfo.isLoading) { yield return(null); } } } }
public XAssetBundleInfo(XSheet.XPack info) { pack = info; bundle = null; isDone = false; isLoading = false; refCount = 0; lastReadTime = 0; }
/// <summary> /// /// </summary> /// <param name="name"></param> public static void LoadScene(string name) { XBundleManager.Instance.ReleaseSceneCachedBundleOnSceneSwitch(); XSheet.XScene info = XSheet.Instance.GetScene(name); if (info != null) { XSheet.XPack packInfo = XSheet.Instance.GetPack(info.bundleName); switch (packInfo.locationType) { case XSheet.XLocationType.Resource: GLog.LogError("XRes.LoadScene can't load bundled scene {0} in resource!", name); break; default: GLog.LogError("[XRes] can't load scene in sync load {0}", name); break; } } else { SceneManager.LoadScene(name); } }