Unity零基础到入门 ☀️| 协程制作简单计时器

举报
呆呆敲代码的小Y 发表于 2021/10/29 18:59:28 2021/10/29
【摘要】 💚案例演示 🚩简单计时器协程中有一个yield方法是:yield return new WaitForSeconds(时间);每当碰到这个方法,意思就是要在这停止对应的时间才执行下面的方法,这个停止的时间是指协程中的时间下面看一下代码具体用法IEnumerator Test(){ Debug.Log("开始协程了"); yield return new WaitForSec...

💚案例演示

🚩简单计时器

协程中有一个yield方法是:yield return new WaitForSeconds(时间);

每当碰到这个方法,意思就是要在这停止对应的时间才执行下面的方法,这个停止的时间是指协程中的时间

下面看一下代码具体用法

IEnumerator Test()
{
    Debug.Log("开始协程了");
    yield return new WaitForSeconds(3);//等待三秒执行下方代码块
    Debug.Log("三秒时间到了,执行此处代码!");
}

上述代码启动协程后,先打印"开始协程了",然后等待三秒之后再打印"三秒时间到了,执行此处代码!"

我们可以利用yield return new WaitForSeconds(时间);执行许多需要延迟的功能!

🚩通过WWW异步请求下载资源

之前有发过一篇文章介绍了在Unity中访问 URL 连接网页 和 下载图片、文件

其中下载文件的时候就提到过,是通过协程的方法来下载的

那这里再简单演示一下,我们拿下载下面这张图片举例!

![请添加图片描述](https://img-blog.csdnimg.cn/ff4862dd35e840938edab06ee0a33809.jpg#pic_center =300x600)

下载这张图片的代码

    public IEnumerator DownTexture()
    {
        //下载路径
        string url = "https://img-blog.csdnimg.cn/ff4862dd35e840938edab06ee0a33809.jpg";
        UnityWebRequest WebRequest = new UnityWebRequest(url);
        DownloadHandlerTexture Download = new DownloadHandlerTexture(true);
        WebRequest.downloadHandler = Download;
        yield return WebRequest.SendWebRequest();
        //等待资源下载完成
        while (!WebRequest.isDone)
        {
            yield return null;
        }
        if (string.IsNullOrEmpty(WebRequest.error))
        {
            //文件下载成功
            //读取的图片
            Texture2D rexture = Download.texture;

            texture2D.sprite = GetSpriteByTexture(rexture);
            Debug.Log("图片下载成功");
        }
        else
        {
            //文件下载失败
            Debug.Log("图片下载失败");
        }
    }
    //将texture转成image的Sprite
    Sprite GetSpriteByTexture(Texture2D tex)
    {
        Sprite _sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
        return _sprite;
    }

在Unity中运行一下,结果如下

请添加图片描述

还有需要异步加载的情况都可以用到协程

比如AB包资源的异步加载Reaources资源的异步加载场景的异步加载等等,就不在一一举例了

主要是介绍一下协程可以用到的地方!


👥总结

本篇文章主要对协程概念原理使用简单案例做了一个介绍说明

真正做项目的时候协程用到的地方也是很多

借助本篇文章可以让你对Unity中的协程有一个简单的概念使用,具体用到的时候可以加深印象!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。