实践证明,以下东西都是协程,并非线程(thread):

1,WWW

2,AssetBundle.LoadFromFileAsync

3,LoadSceneAsync

其它未经测试

此问题的提出是由于一个约3.5M的MP3背景音乐文件的加载。

测试中发现该文件加载时角色走路会有一个短暂的卡顿,经测试是加载此MP3造成的约0.3S的卡顿。

为解决此问题,决定使用LoadFromFileAsync代替LoadFromFile来进行异步加载,结果发现没有任何作用,证明此异步函数只是协程。

然后尝试使用WWW来加载,在UPDATE里询问加载结果:isdone,结果仍然同样的卡,没有任何改变。证明WWW也只是协程,不是多线程的。

------------------------------------------------------

其实MP3只有3M左右,不应该那么卡,原因是在其压缩选项设置:decompressOnLoad,表示加载时解压,U3D文档特别强调了对于大的MP3,使用此选项是非常愚蠢的。

原以为大的MP3是指10M以上的,没想到这就算大的了。。。

最后通过修改压缩选项为compressInMemory解决问题,丝毫不卡。

--------------------------------------

本来想利用C#的Thread类来加载磁盘上的.mp3到内存,然后使用UNITY的 assetbundle.loadFromMemory(bytes[])来加载,如果行得通则肯定不卡。

有点麻烦,有时间再搞。

---------------------------------------------------------------------------

PS: 看来UNITY资源加载并没有任何多线程的功能啊

UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢的更多相关文章

  1. Unity应用架构设计(10)——绕不开的协程和多线程(Part 2)

    在上一回合谈到,客户端应用程序的所有操作都在主线程上进行,所以一些比较耗时的操作可以在异步线程上去进行,充分利用CPU的性能来达到程序的最佳性能.对于Unity而言,又提供了另外一种『异步』的概念,就 ...

  2. Unity应用架构设计(10)————绕不开的协程和多线程(Part 1)

    在进入本章主题之前,我们必须要了解客户端应用程序都是单线程模型,即只有一个主线程(Main Thread),或者叫做UI线程,即所有的UI控件的创建和操作都是在主线程上完成的.而服务器端应用程序,也就 ...

  3. Unity应用架构设计(10)——绕不开的协程和多线程(Part 1)

    在进入本章主题之前,我们必须要了解客户端应用程序都是单线程模型,即只有一个主线程(Main Thread),或者叫做UI线程,即所有的UI控件的创建和操作都是在主线程上完成的.而服务器端应用程序,也就 ...

  4. Unity协程(Coroutine)原理深入剖析

    Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 其实协程并没有那么复杂,网上很多地方都说是多 ...

  5. Unity协程(Coroutine)原理深入剖析(转载)

    记得去年6月份刚开始实习的时候,当时要我写网络层的结构,用到了协程,当时有点懵,完全不知道Unity协程的执行机制是怎么样的,只是知道函数的返回值是IEnumerator类型,函数中使用yield r ...

  6. 【转】Unity协程(Coroutine)原理深入剖析

    Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 记得去年6月份刚开始实习的时候,当时要我写网 ...

  7. jvm(1)类的加载(三)(线程上下文加载器)

    简介: 类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的. Java Applet 需要从远程下载 Java 类文件到浏览器中并执行. 现在类加载器在 ...

  8. Unity 协程(Coroutine)原理与用法详解

    前言: 协程在Unity中是一个很重要的概念,我们知道,在使用Unity进行游戏开发时,一般(注意是一般)不考虑多线程,那么如何处理一些在主任务之外的需求呢,Unity给我们提供了协程这种方式 为啥在 ...

  9. 协程、异步IO

    协程,又称微线程,纤程.英文名Coroutine,协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器 ...

随机推荐

  1. const in C/C++

    1.const 对象必须初始化,因为一旦创建后值不能改变. Eg: const int i = GetSize(); //正确:运行时初始化 const int j = 42;   //正确:编译时初 ...

  2. Redis缓存的设计、性能、应用与数据集群同步

    Redis缓存的设计.性能.应用与数据集群同步 http://youzhixueyuan.com/design-performance-and-application-of-redis-cache.h ...

  3. 《DSP using MATLAB》示例Example 8.13

    %% ------------------------------------------------------------------------ %% Output Info about thi ...

  4. LeetCode Friend Circles

    原题链接在这里:https://leetcode.com/problems/friend-circles/description/ 题目: There are N students in a clas ...

  5. CF 1093E Intersection of Permutations——CDQ分治

    题目:http://codeforces.com/contest/1093/problem/E 只能想到转化成查询一个区间里值在一个范围里的数的个数…… 没有想到这样适合用主席树套树状数组维护.不过据 ...

  6. 谈谈对zynq的浅显理解

    zynq并不能说是一个嵌入arm核的FPGA.从它的启动过程就可以发现,绝对是arm主导的,所以称它为以高性能FPGA为外设的双核arm或许更为合适.以下是优势: 第一个:开发环境的大集成.从hls到 ...

  7. SQL Server数据库常用的T-SQL命令

    1. 查看数据库的版本 select @@version 2.查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4.查看 ...

  8. 【转】Jmeter入门:如何建立和使用Jmeter测试环境

    一.工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用, 后来又扩充了其它的功能.j ...

  9. java代码----I/O流从控制台输入信息判断并抛出异常

    package com.a.b; import java.io.*; public class Yu { public static void main(String[] args) throws I ...

  10. [转]Oracle 连接dll

    https://www.nuget.org/packages/Oracle.ManagedDataAccess