예제 #1
0
 protected override void doAwake()
 {
     _State             = FlowState.Idle;
     FlowHistory        = new List <Flow>();
     CurrentFlow        = Flow.Init;
     NextFlow           = Flow.None;
     _OnChangeFlowEvent = null;
     Next(CurrentFlow);
 }
예제 #2
0
    public void NextAsync(Flow nextFlow, onChangedFlow onChanged = null)
    {
        bool isFailed = false;

        isFailed = isFailed | _State != FlowState.Idle;
        isFailed = isFailed | (((int)nextFlow < 0) || ((int)nextFlow >= SceneNames.Length));
        if (isFailed)
        {
            onChanged?.Invoke(false);
            return;
        }
        _OnChangeFlowEvent = onChanged;
        _State             = FlowState.NextAsyncLoading;
        NextFlow           = nextFlow;
        StartCoroutine(loadScene());
    }
예제 #3
0
    public void BackAsync(onChangedFlow onChanged = null)
    {
        bool isFailed = false;

        isFailed = isFailed | _State != FlowState.Idle;
        isFailed = isFailed | (FlowHistory.Count < 1);
        if (isFailed)
        {
            onChanged?.Invoke(false);
            return;
        }
        int index = FlowHistory.Count - 1;
        var next  = FlowHistory[index];

        _OnChangeFlowEvent = onChanged;
        _State             = FlowState.BackAsyncLoading;
        NextFlow           = next;
        StartCoroutine(loadScene());
    }