Unity框架:JKFrame2.0学习笔记(十三)——协程工具
  v5bEezpf7PPs 2023年11月02日 46 0

构成

CoroutineTool.cs

有几个公开的静态方法,可供调用:

WaitForFixedUpdate()

WaitForSeconds(float time)等待几秒

WaitForSecondsRealtime(float time)等待几秒,但是不受 timeScale的影响

WaitForFrames(int count=1)  等待几帧


作用

主要是对协程的等待做了一层封装,较少GC,方便调用。

源码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace JKFrame
{
    /// <summary>
    /// 
    /// </summary>
    public static class CoroutineTool
    {
        private static WaitForEndOfFrame waitForEndOfFrame = new WaitForEndOfFrame();
        private static WaitForFixedUpdate waitForFixedUpdate = new WaitForFixedUpdate();
        private static YieldInstruction yieldInstruction = new YieldInstruction();
        public static WaitForEndOfFrame WaitForEndOfFrame()
        {
            return waitForEndOfFrame;
        }
        public static WaitForFixedUpdate WaitForFixedUpdate()
        {
            return waitForFixedUpdate;
        }
        public static IEnumerator WaitForSeconds(float time)
        {
            float currTime = 0;
            while (currTime < time)
            {
                currTime += Time.deltaTime;
                yield return yieldInstruction;
            }
        }

        public static IEnumerator WaitForSecondsRealtime(float time)
        {
            float currTime = 0;
            while (currTime < time)
            {
                currTime += Time.unscaledDeltaTime;
                yield return yieldInstruction;
            }
        }

        public static IEnumerator WaitForFrames(int count=1)
        {
            for (int i = 0; i < count; i++)
            {
                yield return yieldInstruction;
            }
        }

    }

}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs