unity的www.dispose()卡死freeze bug
2016-09-02 22:03
253 查看
unity的www.dispose()卡死freeze bug
起因
最近做gearvr开发时,发现了个画面卡死的问题,表现是画面播着播着突然渲染停止,看起来是主渲染线程被无限制卡死,当时只知道具体现象是可能与http请求有关,一直也没有定位到,而在editor模式下不会出现类似的问题,所以大概可以确定是在android平台上发生的。我的unity版本是5.3.4f1调查
最近仔细调试了一下,发现与www的dispose()有关,当然我代码是用的using(WWW www = new WWW(url))
代码块这样的方式自动调用dispose,我试着直接调用
www.dispose()也会有卡死的问题。确定了是dispose()的问题,就在网上看了一些其他人遇到类似的问题。这里我的http请求是服务器一直没有回应,无休止的pending,好吧~
http://answers.unity3d.com/questions/1067499/bug-wwwdispose-when-called-before-wwwisdone-true-f.html
https://issuetracker.unity3d.com/issues/ios-app-freezes-if-www-is-loaded-with-403-url-and-www-dot-dispose-is-called
https://issuetracker.unity3d.com/issues/unity-freezes-when-www-dot-dispose-is-used-while-downloading-assetbundle
https://issuetracker.unity3d.com/issues/android-application-freezes-on-www-dot-dispose-if-connection-is-canceled
大体上说法就是当调用
www.dispose()时,如果之前的请求还没结束,那么可能就会发生阻塞卡死,因为是在协程中调用,如果发生阻塞一样会导致主渲染线程阻塞,大概卡死1分多钟吧。
解决方案
要么就不要去调用dispose了,要么换个实现方式吧,比如besthttp插件,哈哈我觉得至少比www使用起来舒服很多。坑总是很多的,还是要想办法定位和解决。
相关文章推荐
- unity bug
- unity-www下载
- Unity 关于安卓和各平台读写本地json文件,WWW读取本地文件,Unity各路径API(persistentDataPath,StreamingAssets文件夹),目前较完整的详解
- Unity BUG解决——Invalid AABB inAABB
- 测试-一个unity的编译bug,初始化器
- Unity——WWW相关知识精要,Get/Post请求,如何判断机型进行本地资源文件下载。
- www.javaei.com网站建设手记——(6)意想不到的Bug
- 【转】提高Unity中管理多个相机的效率www.maiziedu.com
- unity_www加载失败_IIS服务器跨域问题解决
- Unity 使用自己创建的certificate通过www进行https请求
- Unity-WWW发送Http请求
- unity www读取本地视频文件和外部视频文件 播放视频动画和视频声音
- unity中SendMessage的bug – unity3d游戏开发
- Unity WWW网络动态加载和储存在本地
- 定位unity在rk3288平台上音频解码无效的bug---定位终成功
- Unity 截屏,WWW加载图片,保存到本地
- unity里做URL编码,类似java里的urlEncode,WWW.EscapeURL
- unity5.3.5 UnityWebRequest 循环运行资源未能释放的bug
- safari 7.0 Object.freeze BUG
- 博客迁移到 http://www.cnblogs.com/linuxbug