U3D协程Coroutine之WWW与Update()的并行测试

using System.Collections;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;/************************************************************************/
/* UnityEngine.WWW 下载与Update()的并行测试,UNITY5.35f                  */
/************************************************************************/
public class wwwTest : MonoBehaviour {WWW www;IEnumerator Start () {//下载文件是一个RAR,比较大,要下载几分钟才能完成,//运行发现,下载和Update()并行,游戏正常运行,调试发现创建并使用WWW对象并不会开启新线程//这说明WWW也是利用协程来实现下载的,如果是这样,下载速度应该会受Update()函数调用频率的影响,经测试发现下载速度并不受影响,不明觉厉
        //【补记】在协程函数中使用Thread.sleep(1000)将会卡住主线程,不要在下载时这样用,这样只是在为其它进程节省时间,降低下载速度。     www = new WWW ("http://psoft.33lc.com:801/small/directxruntimes_x86.rar");yield return www;//下载开始,直到下载完成才会执行本函数剩余的代码。        // Load the object asynchronously      AssetBundleRequest request = bundle.LoadAssetAsync ("myObject", typeof(GameObject));      // Wait for completion      yield return request;//加载完成后才会执行后面的代码if(www == null){EditorUtility.DisplayDialog ("", "download stoped", "ok");yield break;//协程将抛弃后面所有代码//yield return null; //协程返回后下次回来会执行下面的代码,由于下载失败,下面的操作将出错
        }if(www.isDone){string info = "download complete";if (!string.IsNullOrEmpty (www.error))//有些平台上不允许string为null,则这时返回空串"";//yield return null; //协程返回后下次回来会执行下面的代码,由于下载失败,下面的操作将出错yield break;EditorUtility.DisplayDialog ("info", info, "ok");}else{EditorUtility.DisplayDialog ("error", "download error", "ok");yield return null;}EditorUtility.DisplayDialog ("finally", "end", "ok");RawImage img = GetComponent<RawImage> ();img.texture = www.texture;}void Update () {if(Input.GetKeyDown (KeyCode.Space)){Debug.Log ("is done: " + www.progress); //显示下载进度
        }else if(Input.GetKeyDown (KeyCode.LeftControl)){if(Input.GetKey (KeyCode.W)){//组合键测试 CTRL + W// 诡异现象,注意:先按CTRL再W无法进入到这里,先W再CTRL则可以进入到这里。//GetKeyDown在按键期间只触发一次,且不能再触发其它按键;GetKey在按键期间一直不断触发,且可以同时再触发其它键//因此两个GetKeyDown(A)&&GetKeyDown(B)不能实现组合键。//GetKey(A) && GetKey(B)可以实现组合键,对游戏效率影响较大//GetKeyDown(A) && GetKey(B)也可以实现组合键,对游戏效率影响较小//相机漫游类的操作需要按键每帧或每几帧触发,因此必须使用getkeyif(EditorUtility.DisplayDialog ("", "你确定要终止下载吗", "ok", "cancel")){www.Dispose ();www = null;}}}if(Input.GetKey (KeyCode.A) && Input.GetKey(KeyCode.B)){Debug.Log ("A AND B ===============");}transform.Rotate (0, 2, 0);}
}

posted on 2016-10-21 19:51 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

U3D协程Coroutine之WWW与Update()的并行测试相关推荐

  1. Unity 协程Coroutine综合测试

    Unity 协程Coroutine综合测试 1 using UnityEngine; 2 using System.Collections; 3 using System.Text; 4 5 publ ...

  2. 【Unity】Unity协程(Coroutine)的原理与应用

    文章目录 前言 一.什么是协程 二.应用场景 1.异步加载资源 2.将一个复杂程序分帧执行 3.定时器 三.协程的使用 注意事项 四.Unity协程的底层原理 1. 协程本体:C#的迭代器函数 2. ...

  3. 并发编程协程(Coroutine)之Gevent

    并发编程协程之Gevent Gevent官网文档地址:http://www.gevent.org/contents.html 基本概念 我们通常所说的协程Coroutine其实是corporate r ...

  4. c++ 协程_理解Python协程(Coroutine)

    由于GIL的存在,导致Python多线程性能甚至比单线程更糟. GIL: 全局解释器锁(英语:Global Interpreter Lock,缩写GIL),是计算机程序设计语言解释器用于同步线程的一种 ...

  5. qemu核心机制分析-协程coroutine

    关于协程coroutine前面的文章已经介绍过了,本文总结对qemu中coroutine机制的分析,qemu 协程coroutine基于:setcontext函数族以及函数间跳转函数siglongjm ...

  6. Lua协程Coroutine是什么

    Lua协程Coroutine是什么 协程和线程不同: 同一时刻,一个多线程程序可以用多个线程同时执行:而协程只能有一个在执行 多线程是抢占式的:而协程是非抢占式的,只有协程显示被挂起,才会被挂起 协程 ...

  7. python3 协程 写法_理解Python的协程(Coroutine)

    由于GIL的存在,导致Python多线程性能甚至比单线程更糟. GIL: 全局解释器锁(英语:Global Interpreter Lock,缩写GIL),是计算机程序设计语言解释器用于同步线程的一种 ...

  8. c++ 协程_Python3 协程(coroutine)介绍

    本文首发于 at7h 的个人博客. 目前 Python 语言的协程从实现来说可分为两类: 一种是基于传统生成器的协程,叫做 generator-based coroutines,通过包装 genera ...

  9. LUA 协程 Coroutine

    协程 Coroutine 协程(coroutine)并不是 Lua 独有的概念,如果让我用一句话概括,那么大概就是:一种能够在运行途中主动中断,并且能够从中断处恢复运行的特殊函数.(嗯,其实不是函数. ...

最新文章

  1. php求二维矩阵的最大子矩阵,最大子矩阵-动态规划
  2. 5.1.5 IO核心子系统
  3. 对话系统有哪些最新进展?这17篇EMNLP 2021论文给你答案
  4. 计量经济学建模_一分钟看完计量经济学
  5. python多线程编程(4): 死锁和可重入锁
  6. mysql3.51 密码修改_mysql修改密码
  7. 9月24日直播丨数据库大咖讲坛(第7期):数据库内核技术与行业应用
  8. linux进程管理与调度
  9. C#简介和异常类总结
  10. ASP.Net学习笔记008--ASP.Net揭秘之Input版自增补充说明
  11. npm 常见用法小结
  12. Java截取视频某一帧
  13. MEMS传感器工作原理总结
  14. 怎么完全卸载赛门铁克_赛门铁克专用卸载工具
  15. 计算器算贝塞尔公式_我不是灯光设计师,但是我会算空间的平均照度
  16. 2017-09-04考试情况总结
  17. 喝杯水都能泄露指纹?屏下指纹识别设备被攻破
  18. mysql 家谱树查询_中国家谱族谱数据库可以登录、查询了
  19. 解决ftp 出现Passive mode refused的办法
  20. 太理同学APP——个人比较有成就感的作品吧!

热门文章

  1. Python字符串格式化之format方法详解
  2. Django 3.1 发布,异步支持增强
  3. Docker中宿主机与容器之间互传文件(docker cp的方式)
  4. 【LeetCode】130.被围绕的区域
  5. Flutter 制作漂亮的登录表单
  6. 7-28作业直接刷一下
  7. bootstrap表格某一列值相同时_Bootstrap-table实现动态合并相同行(表格同名合并)
  8. 神策数据王灼洲 徐缓:ID-Mapping 用户打通那些事儿
  9. 神策数据招募优秀的解决方案销售和售前
  10. 述信科技创始人 CEO 彭圣才:传统行业如何实现数字化转型(附 PPT 下载)