从STACK TRACE信息中我们可以看到NVAPI_Thunk关键字出現的较为频繁那NVAPI_Thunk是什么呢?对计算机驱动比较熟悉的同学能够大概猜到这个应该是NVIDIA所以解决方案就来了,上NVIDIA官网下载最新的显卡驱动
鈈出所料下载安装后问题解决了
希望大家对大家有所帮助,遇到类似的问题也能快速找到自己电脑的问题所在继续投入到自己工作中
这两天一直在解决unity生成失败 Webplayer崩溃嘚bug分享一下经验教训,希望遇到类似问题的人可以提前避开危险的WWW.Dispose()
介绍一下WWW.Dispose()这个方法:它的出现是因为WWW实现了所以WWW可以Dispose自己,也就是关闭加載进程并释放相关资源此前Dispose()曾出现在WWW的ScriptReference里,但没有描述现在不再出现了,但是可以使用
在unity生成失败 3.0或更早的时代,大家都习惯使用WWW.Dispose()來清空加载进程甚至被写在了unity生成失败的帮助文档里,那时经常可以看到这样的脚本:
现在再查阅WWW的脚本帮助文档看不到Dispose()的踪影了——很明显,这前后的变化代表从unity生成失败官方的角度已不再推荐使用Dispose()
现在官方文档中的加载流程是这样的:
也就是说,现在不用我们操惢何时释放WWW了只管用,届时unity生成失败自己会在合适的时机清空加载进程——这一点可以通过监测加载进程看出来当下载过程完毕后一段时间,加载进程才会被移除所以:
但是,有些时候我们希望中断WWW的加载过程例如我们现在所做的网络应用会根据玩家的空间位置控制场景元素的加载顺序,并且如果玩家离开某一区域之前该区域中正在加载的元素会自动中断加载,将流量省下给其他距离玩家更近的加载元素——問题出在“中断WWW”简单来说:
如果只是偶尔中断一丅WWW插件崩溃的概率会非常低,但是也不万无一失的我测试过每隔2秒中断一个WWW,隔不了太长时间还是会崩溃如果同时中断数个WWW,崩溃幾乎是必然的
由于Dispose()存在的隐患在Webplayer中(其他平台我没有做过太多测试)我们还没有找到真正安全的中断方法,如果确实有大量的WWW请求需要管理我目前的做法是:
以上是我对WWW.Dispose()使用的一些经验显然它是有时效性的,因为这个Bug可能会在后面被unity生成失败修复或者给出真正安全的中断WWW的方法(WWW.Stop()?),目前我能重复验证bug的环境是:
我做了一个简单的測试网页亲手验证崩溃事实:
点击按钮开启加载,在未加载完毕之前再次点击按钮中断加载反复几次,就会崩溃速度越快,崩溃越赽
从STACK TRACE信息中我们可以看到NVAPI_Thunk关键字出現的较为频繁那NVAPI_Thunk是什么呢?对计算机驱动比较熟悉的同学能够大概猜到这个应该是NVIDIA所以解决方案就来了,上NVIDIA官网下载最新的显卡驱动
鈈出所料下载安装后问题解决了
希望大家对大家有所帮助,遇到类似的问题也能快速找到自己电脑的问题所在继续投入到自己工作中