示例#1
0
    void OnClick()
    {
        LevelListener ll = new LevelListener();

        ll.callBack = TT;
        App.LevelMgr.LoadLevelAsync(sceneName, ll);
    }
示例#2
0
 /// <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;
     }
 }
示例#3
0
    /// <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.)
        }
    }
示例#4
0
    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;
            }
        }
    }
示例#5
0
    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;
        }
    }
示例#6
0
 /// <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);
     }
 }