/// <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); } } } }
/// <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); } }
/// <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 } }