Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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());
        }