Ejemplo n.º 1
0
    protected bool CanLoadLevel()
    {
        BaseSceneState Next    = base.NextState as BaseSceneState;
        BaseSceneState Current = base.CurrentState as BaseSceneState;

        return((Next.LevelEnum != null && (Current == null || Next.LevelEnum != Current.LevelEnum)) || base.ForceStateReload);
    }
Ejemplo n.º 2
0
    //设置当前的状态
    public void ChangeState(BaseSceneState state)
    {
        currentState.StateEnd();                                              //执行上一状态的end方法

        currentState = state;                                                 //切换状态

        asyncOperation = SceneManager.LoadSceneAsync(currentState.SceneName); //异步加载当前场景
        isRunStart     = false;                                               //异步执行当前状态的Start方法
    }
Ejemplo n.º 3
0
 void SetSceneState(BaseSceneState sceneState)
 {
     if (m_state.GetESceneState() != sceneState.GetESceneState())
     {
         //开始准备切换场景
         m_bSceneLoaded = false;
         //清理当前场景
         m_state.SceneStateEnd();
         //设置新场景
         m_state = sceneState;
         //加载场景
         LoadScene(m_state.GetSceneName());
     }
 }
    protected virtual void Start()
    {
        LoadState();

        GameObject instance = Instantiate(Resources.Load("Prefab/Scene/FadeCanvas")) as GameObject;

        m_fadeController = instance.GetComponent <FadeController>();

        m_currentState = m_sceneStateList[0];
        foreach (var state in m_sceneStateList)
        {
            state.Initialize(this);
        }

        m_currentState.OnStart();
    }
    public void SetState(BaseSceneState _state, string loadSceneName)
    {
        //载入场景
        isLoad   = true;
        runBegin = false;
        LoadScene(loadSceneName);

        //通知前一个State结束
        if (m_State != null)
        {
            m_State.StateEnd();
        }

        //设置新的状态
        m_State = _state;
    }
    public void ChangeState <T>()
    {
        foreach (var state in m_sceneStateList)
        {
            //Typeが違う
            if (state.GetType() != typeof(T))
            {
                continue;
            }
            if (m_currentState)
            {
                m_currentState.OnRelease();
            }

            m_currentState = state;
            m_currentState.OnStart();
        }
    }
Ejemplo n.º 7
0
    protected string LoadLevelName()
    {
        BaseSceneState Next = base.NextState as BaseSceneState;

        return(Next.LevelEnum.Name);
    }
Ejemplo n.º 8
0
 public SceneController()
 {
     m_evtCtx = new GameEventContext();
     m_state  = new LoginSceneState(this);
     m_state.SceneStateBegin();
 }