public static List <GameObject> PackSceneObj() { return(ResManager.FindAllGameObject()); }
public static PackedSceneObjs PackSceneAndDialogs(GameObject[] dialogObjs) { var oldObjs = ResManager.FindAllGameObject(); var ret = new PackedSceneObjs(); foreach (var obj in oldObjs) { if ((obj.layer == SceneAndDialogCacheLayer) || (UICameraName.Equals(obj.name))) { continue; } var canvas = obj.GetComponent <Canvas>(); if (canvas != null && canvas.sortingLayerName == "Dialog") { bool find = false; if (dialogObjs != null) { foreach (var dialogObj in dialogObjs) { if (dialogObj != obj) { continue; } find = true; break; } } if (find) { ret.DialogObjs.Add(obj); ret.InitialDialogObjsActive.Add(obj.activeSelf); continue; } ret.SceneObjs.Add(obj); ret.InitialSceneObjsActive.Add(obj.activeSelf); continue; } var canvasGroup = obj.GetComponent <CanvasGroup>(); if (canvasGroup != null && canvasGroup.blocksRaycasts == false) { GameObject.Destroy(obj); continue; } ret.SceneObjs.Add(obj); ret.InitialSceneObjsActive.Add(obj.activeSelf); } // 按order从小到大排序,这样才能和lua中的记录对应上 ret.DialogObjs.Sort((x, y) => { var orderX = x.transform.GetComponent <Canvas>().sortingOrder; var orderY = y.transform.GetComponent <Canvas>().sortingOrder; return(orderX - orderY); }); for (int i = 0; i < ret.DialogObjs.Count; ++i) { ret.InitialDialogObjsActive.Add(ret.DialogObjs[i].activeSelf); } return(ret); }
private static IEnumerator LoadAssetAsyncWork(CoroutineTasks.CoroutineWork req, string asset, Type type) { while (AsyncWorkTimer.Check()) { yield return(null); } while (ResManager.IsCollectingGarbage) { yield return(null); } ResManager.DelayGarbageCollectTo(System.Environment.TickCount + 10000); #if COMPATIBLE_RESMANAGER_V1 asset = CompatibleAssetName(asset); #endif CapsResManifestNode node; if (CollapsedManifest.TryGetItem(asset, out node) && node.Item != null) { var sceneitem = node.Item; while (sceneitem.Ref != null) { sceneitem = sceneitem.Ref; } var scenepath = sceneitem.Node.GetFullPath(); int sceneindex; if (IsBuiltinScene(scenepath, out sceneindex)) { if (sceneindex >= 0) { yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(sceneindex, type == null ? UnityEngine.SceneManagement.LoadSceneMode.Single : UnityEngine.SceneManagement.LoadSceneMode.Additive)); } else { yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(System.IO.Path.GetFileNameWithoutExtension(node.PPath), type == null ? UnityEngine.SceneManagement.LoadSceneMode.Single : UnityEngine.SceneManagement.LoadSceneMode.Additive)); } ResManager.DelayGarbageCollectTo(int.MinValue); //req.Result = ??? yield break; } var item = node.Item; var ai = CreateAssetInfo(item); ResManager.DelayGarbageCollectTo(System.Environment.TickCount + 10000); yield return(ai.PreloadAsync()); ResManager.DelayGarbageCollectTo(System.Environment.TickCount + 10000); var work = new CoroutineTasks.CoroutineWorkSingle(); work.SetWork(ai.LoadAsync(work, type)); yield return(work); req.Result = work.Result; } else { int sceneindex; if (IsBuiltinScene(asset, out sceneindex)) { if (sceneindex >= 0) { yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(sceneindex, type == null ? UnityEngine.SceneManagement.LoadSceneMode.Single : UnityEngine.SceneManagement.LoadSceneMode.Additive)); } else { yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(System.IO.Path.GetFileNameWithoutExtension(asset), type == null ? UnityEngine.SceneManagement.LoadSceneMode.Single : UnityEngine.SceneManagement.LoadSceneMode.Additive)); } ResManager.DelayGarbageCollectTo(int.MinValue); //req.Result = ??? yield break; } } ResManager.DelayGarbageCollectTo(int.MinValue); }