protected override void OnUpdateStageContext()   //Engine_ChoiceCreate(myFirstMark,*DL_Choice_0*,true,<Engine_ScriptLoadFile(*SC_SomeScriptName*)>,mySecondMark,*DL_Choice_1*,false,<Engine_ScriptLoadFile(*SC_OtherScriptName*)>)
        {
            if (paraList.Count == 0 || paraList.Count % 4 != 0)
            {
                throw new System.Exception("EngineChoiceCreateNode");
            }

            StateMachineManager stateMachine = PachiGrimoire.I.StateMachine;

            stateMachine.TransferStateTo(ChoiceWaitState.Instance);
            StateBuff stateBuff = stateMachine.StateBuff;

            if (stateBuff == StateBuff.Next)
            {
                stateMachine.SetStateBuff(StateBuff.Normal);
            }

            List <ChoiceItem> choiceItemList = new List <ChoiceItem>();
            string            mark;
            string            dlIndex;
            bool   canBeSelected;
            string onSelectedScirptContext;

            for (int i = 0; i < paraList.Count; i += 4)
            {
                mark                    = paraList[i];
                dlIndex                 = paraList[i + 1];
                canBeSelected           = bool.Parse(paraList[i + 2]);
                onSelectedScirptContext = paraList[i + 3];
                ChoiceItem choiceItem = new ChoiceItem(mark, dlIndex, canBeSelected, onSelectedScirptContext);
                choiceItemList.Add(choiceItem);
            }
            StageRenderManager.I.ChoiceCreate(choiceItemList);
        }
        private void Update()
        {
            #region Test
            if (Input.GetKeyDown(constData.KeyConfirm))
            {
                StartGame();
            }
            else if (Input.GetKeyDown(KeyCode.T))
            {
                StartGameTest();
            }
            #endregion



            #region State
            BaseState state = stateMachine.CurrentState;

            if (state == RunScriptState.Instance)   // RunScript State
            {
                bool success = scriptManager.NextSentence();
                if (success == false)
                {
                    Debug.LogWarning("脚本执行结束");
                    if (stageRenderManager.IsShow == true)
                    {
                        stageRenderManager.OnHide();
                        FinalizeGame();
                    }
                }
            }
            else if (state == RunWaitState.Instance)     // RunWait State
            {
                StateBuff stateBuff = stateMachine.StateBuff;
                if (stateBuff == StateBuff.Normal)
                {
                    // Pass
                }
                else if (stateBuff == StateBuff.Auto)      // Auto Buff
                {
                    if (isFirstInAutoBuff == false)
                    {
                        isFirstInAutoBuff = true;
                        float autoMessageSpeed = ConfigManager.Config.AutoMessageSpeed;
                        float highestTime      = constData.AutoMessageSpeedHighest;
                        float lowestTime       = constData.AutoMessageSpeedLowest;
                        autoWaitTime  = (highestTime - lowestTime) * autoMessageSpeed + lowestTime;
                        autoStartTime = Time.time;
                    }
                    if (Time.time - autoStartTime >= autoWaitTime)
                    {
                        stateMachine.TransferStateTo(RunScriptState.Instance);
                        isFirstInAutoBuff = false;
                    }
                }
                else if (stateBuff == StateBuff.Skip)     // Skip Buff
                {
                    if (configManager.Config.IsReadSkipOrAllSkipNot)
                    {
                        if (PastScriptManager.HasRead(ScriptManager.ScriptPointerScriptName, scriptManager.ScriptPointerLineNumber))
                        {
                            stateMachine.TransferStateTo(RunScriptState.Instance);
                        }
                        else
                        {
                            stateMachine.SetStateBuff(StateBuff.Normal);
                        }
                    }
                    else
                    {
                        stateMachine.TransferStateTo(RunScriptState.Instance);
                    }
                }
                else if (stateBuff == StateBuff.Next)     // Next Buff
                {
                    stateMachine.TransferStateTo(RunScriptState.Instance);
                }
            }


            #endregion
        }