/// <summary> /// 异步加载场景 /// </summary> public static bool LoadSceneAsync(out AsyncOperation ao , string scene_name , System.Action <string> callback = null , LoadSceneMode mode = LoadSceneMode.Single) { ao = null; if (LoadPattern.ResourcesLoadPattern == emLoadPattern.AssetBundle || LoadPattern.ResourcesLoadPattern == emLoadPattern.All) { ao = AssetBundleManager.Instance.LoadSceneAsync(scene_name, mode); if (ao != null) { CoroutineExecutor.Create(ao, () => { GenerateSceneObject(scene_name); if (callback != null) { callback(scene_name); } }); return(true); } } if (LoadPattern.ResourcesLoadPattern == emLoadPattern.Original || LoadPattern.ResourcesLoadPattern == emLoadPattern.All) { if (!Application.CanStreamedLevelBeLoaded(scene_name)) { return(false); } ao = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(scene_name, mode); if (ao != null) { CoroutineExecutor.Create(ao, () => { if (callback != null) { callback(scene_name); } }); return(true); } } return(false); }
/// <summary> /// 异步加载场景 /// </summary> public static bool LoadSceneAsync(out SceneLoadRequest req , string scene_name , System.Action <string> callback = null , LoadSceneMode mode = LoadSceneMode.Single) { req = null; #if UNITY_EDITOR if (LoadPattern.SceneLoadPattern == emLoadPattern.EditorAsset || LoadPattern.SceneLoadPattern == emLoadPattern.All) { if (!Application.CanStreamedLevelBeLoaded(scene_name)) { return(false); } var ao = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(scene_name, mode); if (ao != null) { req = new SceneLoadRequest(ao); CoroutineExecutor.Create(req, () => { if (callback != null) { callback(scene_name); } }); return(true); } } #endif if (LoadPattern.SceneLoadPattern == emLoadPattern.AssetBundle || LoadPattern.SceneLoadPattern == emLoadPattern.All) { req = AssetBundleManager.Instance.LoadSceneAsync(scene_name, mode); if (req != null) { CoroutineExecutor.Create(req, () => { GenerateSceneObject(scene_name); if (callback != null) { callback(scene_name); } }); return(true); } } if (LoadPattern.SceneLoadPattern == emLoadPattern.Original || LoadPattern.SceneLoadPattern == emLoadPattern.All) { if (!Application.CanStreamedLevelBeLoaded(scene_name)) { return(false); } var ao = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(scene_name, mode); if (ao != null) { req = new SceneLoadRequest(ao); CoroutineExecutor.Create(req, () => { if (callback != null) { callback(scene_name); } }); return(true); } } return(false); }