示例#1
0
        /// <summary>
        /// 初始化协程。
        /// </summary>
        /// <param name="customCoroutineCreator">自定义协程创建器,若为空则调用全局协程</param>
        /// <param name="customCoroutineTeminator">自定义协程终止器,若为空则调用全局协程</param>
        public void Initialization(CoroutineCreator customCoroutineCreator = null, CoroutineTeminator customCoroutineTeminator = null)
        {
            mCoroutineCreator   = customCoroutineCreator;
            mCoroutineTeminator = customCoroutineTeminator;

            if (mCoroutineCreator == null)
            {
                mCoroutineCreator = (enumerator) => CoroutineHelper.StartCoroutine(enumerator);
            }

            if (mCoroutineTeminator == null)
            {
                mCoroutineTeminator = (enumerator) => CoroutineHelper.StopCoroutine(enumerator);
            }

            for (int i = 0, iMax = mCoroutinesArray.Length; i < iMax; i++)
            {
                var coroutineInfo = new CoroutineInfo();
                coroutineInfo.Task = new Task();
                coroutineInfo.Task.Init();
                coroutineInfo.Task.OnTaskFinished = DetectTaskWaitCoroutine;

                var coroutine = mCoroutineCreator(coroutineInfo.Task.Tick());

                coroutineInfo.Coroutine = coroutine;

                mCoroutinesArray[i] = coroutineInfo;
            }

            mIsInitialized = true;
        }
示例#2
0
        /// <summary>
        /// 停止组内所有协程。
        /// </summary>
        public void StopAllCoroutines()
        {
            for (int i = 0, iMax = mCoroutineList.Count; i < iMax; i++)
            {
                var coroutine = mCoroutineList[i];
                CoroutineHelper.StopCoroutine(coroutine);
            }

            mCoroutineList.Clear();
        }
示例#3
0
 /// <summary>
 /// 停止一个创建出的协程。
 /// </summary>
 public void StopCoroutine(Coroutine routine)
 {
     mCoroutineList.Remove(routine);
     CoroutineHelper.StopCoroutine(routine);
 }