protected IEnumerator AnsySwitchScene() { var ansyOperation = Resources.UnloadUnusedAssets(); while (!ansyOperation.isDone) { yield return(null); } System.GC.Collect(); #if UNITY_TEST_ALIVED_OBJECT AssetLoaderManager.Instance().ReportAlivedObject(); #endif if (null != _param && null != _param.loadingTask) { yield return(_param.loadingTask); } if (_current.HasAnsyTask) { yield return(_current.LoadAnsyTask()); } _current.Enter(); if (null != _param && null != _param.end) { _param.end.Invoke(); } if (null != _param) { _param.Clear(); _param = null; } }
public void SwitchScene(int iId, SceneParam param = null) { _sceneId = iId; _param = param; StopAllCoroutines(); if (null != _current) { _current.Exit(); _current = null; } if (null != param && null != param.begin) { param.begin.Invoke(); param.begin = null; } _current = Create(iId); object argv = null; if (null != _param) { argv = _param.argv; } if (null == _current || !_current.Create(argv)) { LoggerManager.Instance().LogErrorFormat("Create Scene Failed For Id = {0}", iId); return; } StartCoroutine(AnsySwitchScene()); }