Scene---场景的异步加载

来源:互联网 发布:淘宝店铺推广平台 编辑:程序博客网 时间:2024/05/22 02:01

通常,我们加载场景需要较长时间,我们通常选择异步加载,如果我们想在加载完成之后做一些事情,比如初始化或者Start方法,,我们其中一种方法如下,废话不多说,

比如下面的例子是想在加载成功后调用当前状态的StartState方法

一种在update中检测加载是否成功的方法

public class SceneStateController{
    //是否加载成功(一种减少update的方法)
    private bool isFinishLoad = false;
    //当前状态
    private SceneState m_currentSceneState = null;
    //一步操作
    private AsyncOperation m_ao;


    public void _SetState(SceneState state)
    {
        if(m_currentSceneState == null)
        {
            m_currentSceneState = state;
        }
        //异步加载程序
        m_ao = SceneManager.LoadSceneAsync(state.m_SceneName);
        //
        isFinishLoad = false;
    }


    public void _StateUpdate()
    {
        //如果正在加载但还没有完成,我们return
        if (m_ao!=null && m_ao.isDone == false) return;
        //如果加载完成,我们调用下面方法
        if(isFinishLoad == false && m_currentSceneState!=null && m_ao.isDone == true)
        {
            m_currentSceneState._StartScene();
            isFinishLoad = true;
        }
        if(m_currentSceneState != null)
        {
            m_currentSceneState._UpdateScene();
        }
    }
}