private void _OnComplete()
            {
                Debug.Log(_CurrentLoopCount);
                _Processers.Current.CompleteAsObservable()
                .First()
                .Subscribe(_ =>
                {
                    if (_Processers.MoveNext())
                    {
                        _OnComplete();
                        return;
                    }
                    else if (_LoopCount - 1 > _CurrentLoopCount)
                    {
                        _CurrentLoopCount++;
                        var array = new EnemyActionProcesser[_Data.Count()];
                        for (int i = 0; i < array.Length; i++)
                        {
                            array[i] = new EnemyActionProcesser(_Enemy, _Data.ElementAt(i));
                        }
                        _Processers = array.AsEnumerable().GetEnumerator();
                        _Processers.MoveNext();

                        _OnComplete();

                        return;
                    }
                    else
                    {
                        _CompleteObserver.OnNext(Unit.Default);
                    }
                });
            }
            public EnemyProcesserManager(Enemy enemy, IEnumerable <EnemyActionData> data)
            {
                _OnCompleteObserver = new Subject <Unit> ();
                var processerArray = new EnemyActionProcesser[data.Count()];

                for (int i = 0; i < processerArray.Length; i++)
                {
                    processerArray[i] = new EnemyActionProcesser(enemy, data.ElementAt(i));
                }

                _Processers = processerArray.AsEnumerable().GetEnumerator();
                _Processers.MoveNext();
                _OnComplete();
            }
            public RepeatEnemyProcesserManager(int loopCount, Enemy enemy, IEnumerable <EnemyActionData> data)
            {
                if (loopCount < 0)
                {
                    throw new InvalidOperationException("LoopCountの値は1以上に設定してください");
                }
                _Enemy     = enemy;
                _Data      = data;
                _LoopCount = loopCount;
                var array = new EnemyActionProcesser[data.Count()];

                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = new EnemyActionProcesser(enemy, data.ElementAt(i));
                }
                _Processers = array.AsEnumerable().GetEnumerator();
                _Processers.MoveNext();
                _OnComplete();
            }
 private void _OnComplete()
 {
     _ProcesserEnumRator.Current.CompleteAsObservable()
     .First()
     .Subscribe(_ =>
     {
         if (_ProcesserEnumRator.MoveNext())
         {
             _OnComplete();
         }
         else
         {
             var processerArray = new EnemyActionProcesser[_Data.Count()];
             for (int i = 0; i < processerArray.Length; i++)
             {
                 processerArray[i] = new EnemyActionProcesser(_Enemy, _Data.ElementAt(i));
             }
             _Processer          = processerArray.AsEnumerable();
             _ProcesserEnumRator = _Processer.GetEnumerator();
             _ProcesserEnumRator.MoveNext();
             _OnComplete();
         }
     });
 }