void OnClick() { LevelListener ll = new LevelListener(); ll.callBack = TT; App.LevelMgr.LoadLevelAsync(sceneName, ll); }
/// <summary> /// 异步切换场景,前后两个场景重叠在一起 /// </summary> /// <param name="sceneName"></param> /// <param name="listener"></param> public void LoadLevelAdditiveAsync(string sceneName, LevelListener listener) { m_async = null; Logger.LogYellow("load level async " + sceneName + " :" + Time.realtimeSinceStartup); if (m_loadingScene) { Logger.LogWarning("other scene is loading..."); } else if (string.IsNullOrEmpty(sceneName)) { Logger.LogWarning("scene name is null"); } else if (listener == null) { Logger.LogWarning("linster is null: " + listener); } else { m_loadingSceneName = sceneName; m_levelListener = listener; SetStartLoading(); m_async = Application.LoadLevelAdditiveAsync(sceneName); m_async.allowSceneActivation = false; m_bAlmostLoaded = false; } }
/// <summary> /// 运行游戏场景 TODO by ljdong /// </summary> private void LaunchLevel() { m_authClose = m_loadingStateParam.autoCloseUI; if (m_loadingStateParam.sceneName != null) { m_levelListener = new LevelListener(); m_levelListener.callBack = new LevelListener.OnLevelLoaded(this.OnLevelLoaded); //if(App.LevelMgr.) } }
public override void Update() { this.m_loadingP += Time.deltaTime * m_loadingSpeedIdle; if (!m_startedFadeOut && !m_maskAnimation.IsPlaying(m_switchingInClipName) && !m_maskAnimation.IsPlaying(m_switchingOutClipName)) { if (!m_startedFadeIn) { m_startedFadeIn = true; m_maskAnimation.Play(m_switchingInClipName); m_loadingP += 10; } else if (!m_doneFadeIn) { m_doneFadeIn = true; if (m_stateParam.TargetSceneName != null) { m_listener = new LevelListener(); m_listener.callBack = new LevelListener.OnLevelLoaded(OnLevelLoaded); m_maskAnimation.CrossFade(m_switchingClipName); m_loadingP += 10; if (m_stateParam.bAdditive) //两个场景重叠 { App.LevelMgr.LoadLevelAdditiveAsync(m_stateParam.TargetSceneName, m_listener); } else { App.LevelMgr.LoadLevelAsync(m_stateParam.TargetSceneName, m_listener); } } else { m_doneLoaded = true; } } else if (m_doneLoaded && !m_startedFadeOut) { App.Game.GameStateMgr.SwitchTo(m_stateParam.TargetSceneGameStateID, m_stateParam.TargetSceneParam); this.m_startedFadeOut = true; this.m_loadingP += 10; } } }
public void Update() { m_loadingTime += Time.deltaTime; if (m_loadingScene && m_loadingTime > 0.1f) //预留0.1s再开始加载 { if (this.m_async != null) { if (!m_bAlmostLoaded && m_async.progress >= 0.9f) //进度最多到0.9f { m_async.allowSceneActivation = true; //进入异步加载的场景 m_bAlmostLoaded = true; m_additionalLoadingTime = 0; return; } else { if (m_bAlmostLoaded) { m_additionalLoadingTime += Time.deltaTime; if (m_additionalLoadingTime < 0.1f) //进入场景后预留0.1f做相应处理 { return; } } else { return; } } } m_loadingScene = false; ClearOldSceneResources(); m_levelListener.callBack(m_loadingSceneName); m_levelListener = null; m_async = null; } }
/// <summary> /// 同步切换场景 /// </summary> /// <param name="sceneName"></param> /// <param name="listener"></param> public void LoadLevel(string sceneName, LevelListener listener) { Logger.LogYellow("load level:" + sceneName); if (m_loadingScene) { Logger.LogWarning("other scene is loading..."); } else if (string.IsNullOrEmpty(sceneName)) { Logger.LogWarning("scene name is null"); } else if (listener == null) { Logger.LogWarning("listener is null: " + listener); } else { m_loadingSceneName = sceneName; m_levelListener = listener; SetStartLoading(); Application.LoadLevel(sceneName); } }
public static void setLevelRequestListener(LevelListener listener) { levelRequestListener = listener; if(pendingLevelId != null){ requestLevelS(pendingLevelId); } }