Esempio n. 1
0
        /// <summary>
        /// update
        /// </summary>
        private void Update()
        {
            if (null == asyncOperation)
            {
                return;
            }

            currentRealProgress = asyncOperation.progress;
            if (currentSimlateProgress < currentRealProgress)
            {
                currentSimlateProgress = currentRealProgress; // += 0.05f;
                if (null != asyncLoadCallback)
                {
                    if (currentSimlateProgress >= 1)
                    {
                        if (null != sceneEnter)
                        {
                            asyncLoadCallback(1);
                            sceneEnter(currentSceneName, userObject);
                            userObject = null;
                            sceneEnter = null;
                        }

                        asyncOperation    = null;
                        asyncLoadCallback = null;
                    }
                    else
                    {
                        asyncLoadCallback(currentSimlateProgress);
                    }
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 同步加载一个场景
        /// </summary>
        /// <param name="_sceneName">场景名称</param>
        /// <param name="_userObject">user object</param>
        /// <param name="_sceneEnter">场景进入的委托回调</param>
        public void LoadScene(string _sceneName, object _userObject, SceneEneter _sceneEnter)
        {
            if (true == string.IsNullOrEmpty(_sceneName))
            {
                return;
            }

            currentSceneName = _sceneName;
            userObject       = _userObject;
            SceneManager.LoadScene(_sceneName);
            if (null != _sceneEnter)
            {
                _sceneEnter(_sceneName, userObject);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 异步加载场景
        /// </summary>
        /// <param name="_sceneName">名字</param>
        /// <param name="_userObject"></param>
        /// <param name="_loadCallback">加载回调</param>
        /// <param name="_sceneEnter"></param>
        public void LoadSceneAsync(string _sceneName, object _userObject, Action <float> _loadCallback, SceneEneter _sceneEnter)
        {
            if (true == string.IsNullOrEmpty(_sceneName))
            {
                return;
            }

            currentSceneName       = _sceneName;
            userObject             = _userObject;
            asyncOperation         = SceneManager.LoadSceneAsync(_sceneName); // 开始异步加载
            asyncLoadCallback      = _loadCallback;
            sceneEnter             = _sceneEnter;
            currentSimlateProgress = 0;

            if (null != asyncLoadCallback)
            {
                asyncLoadCallback(0); // 默认0
            }
        }