zoukankan      html  css  js  c++  java
  • UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢

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

    PS,看到评论区有人骂我,其实这个仅仅是我个人的笔记,是刚接触UNITY的时候写的,有时间我会再确认下,对错仅供参考

    实践证明,以下东西都是协程,并非线程(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资源加载并没有任何多线程的功能啊

  • 相关阅读:
    long和Long的区别
    C语言的变量的内存分配
    Java蓝桥杯 算法提高 九宫格
    Java实现 蓝桥杯算法提高金明的预算方案
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/7525837.html
Copyright © 2011-2022 走看看