예제 #1
0
 /// <summary>
 /// 指定したコルーチンを終了させます。
 /// </summary>
 /// <param name="routine"></param>
 public void StopCoroutine(CRoutine routine)
 {
     if (_updateing)
     {
         if (_updates.TryAdd(routine, _OpCode.REMOVE))
         {
             routine.Cancel();
         }
     }
     else
     {
         if (_routines.Remove(routine))
         {
             routine.Cancel();
         }
     }
 }
예제 #2
0
        /// <summary>
        /// コルーチンを開始させます。
        /// </summary>
        /// <param name="routine"></param>
        /// <returns></returns>
        public CRoutine StartCoroutine(IEnumerable routine)
        {
            _handle += 1;
            CRoutine r = new CRoutine(_handle, routine);

            if (_updateing)
            {
                // 実際に追加されるのは次のフレームとなってしまうため同一フレーム内で進めます。
                if (r.Updater.MoveNext())
                {
                    _updates.TryAdd(r, _OpCode.ADD);
                }
            }
            else
            {
                _routines.Add(r);
            }

            return(r);
        }
예제 #3
0
        static void Main(string[] args)
        {
            //manager.StartCoroutine(Co1());
            //manager.Start(Co3());

            manager.StartCoroutine(Co5());

            routine = manager.StartCoroutineSequence(Co1(), Co2());

            manager.StartCoroutine(Co4());

            //manager.StopCoroutine(routine);

            CTasker tasker = new CTasker();

            tasker.Run(manager.Update);

            while (true)
            {
                Thread.Sleep(1000);
            }
        }