public void Reset()
 {
     lock (this)
     {
         _status         = ActionSequenceStatus.Idle;
         _curActionIndex = -1;
         _startTime      = 0;
     }
 }
        private void Finish()
        {
            lock (this)
            {
                _status = ActionSequenceStatus.Finished;

                _curActionIndex = -1;

                OnSequenceComplete();
            }
        }
        public void Cancel()
        {
            lock (this)
            {
                if (_status == ActionSequenceStatus.Idle ||
                    _status == ActionSequenceStatus.Running)
                {
                    _status = ActionSequenceStatus.Canceled;

                    _curActionIndex = -1;

                    OnSequenceCancel();
                }
            }
        }
        public void Start()
        {
            lock (this)
            {
                if (_status == ActionSequenceStatus.Running)
                {
                    return;
                }

                // 在这里调用,确保状态确实是Before Start的。
                OnSequenceStart();

                _status         = ActionSequenceStatus.Running;
                _curActionIndex = 0;
                _startTime      = GetCurrentTime();
            }
        }