Unity3D-使用AssetBundle打包后Load资源时编辑器直接崩溃总结

链接:http://blog.csdn.net/pz789as/article/details/72853759


在开发Unity游戏的时候,为了时包变得更加小,需要将资源打包成AssetBundle,把用到的图片都改为预制(这个是从雨松那看到的,原因是如果直接放在Resources文件夹下,包会成倍数增加)

我今天尝试了将一些序列图打包成AssetBundle之后,在加载的时候,编辑器突然就瞬间崩溃,什么错误报告都没有弹出。

其他所有的都完好无损,也没有提示错误,但是只要调用LoadAsset就会直接崩,于是只能细心去查找哪里出了问题。

首先:我是检查打包时设置的AssetBundle的标签是不是对的,发现并没有错乱设置(这个有时候因为手动操作不当会出现这个问题);

其次:检查打出的包的manifest文件是否有额外不必要的引用,以及你需要的资源是否都在文件中列出来。(额外引用是指当前打包的引用资源被打包到其他Bundle中去了,可能会引起不必要的错误,文件名字列表如果没有你想要的文件,就好好检查下那个设置没设置对!)

再次:检查在Load之前,使用www.LoadFromCacheOrDownload加载资源是否加载出来,这个很好查。

前面三个我检查了无数遍,都一一排除了,最后还是没找到原因。正在我气恼的时候,想着灌一个真机看看,问题终于找到了,里面有一个图没有加载出来,在真机上并没有崩溃,而是显示的空图,这下有头绪了,我继续Load,加载其他的图片,看看是不是整个包的问题。

后面发现,并不是整个包的问题,而是只有那张图片不行,其他的图片都可以!于是再次回到编辑器中尝试加载其他的图片,看看会不会崩,结果是符合预期的,并没有!

接下来就是重点了:

为什么只有这张图不能使用,经过再三尝试终于发现,原来我是场景中已经引用了这一张图了,Unity在打包的时候判断你这个图已经在包里面,所以就不会给你打包或者说弄个错的东西在里面,然后你所有的程序都没有问题,就是加载的时候Unity可能内部没有做判断,就直接崩溃了。

最后,我把那张在场景中的图删除,然后重新打了一个包,运行之后,没问题了!真是让我一顿好找呀,花了整整一个下午时间去!真鄙视Unity,你加载不出来,你报个错也好呀!哎~~

另外,在重新打包之后,请记得一定要在加载之前调用Caching.CleanCache(); 否则你就算改了包,他也不会更新的,还是会从缓存里面那资源!


最重要的一点:  场景中如果已经引用的资源,请一定要处理,要么把场景中的去掉,要么不要将他打入AssetBundle中去。。

我使用的Unity版本是:5.5.0


最新发现:在把Unity更新到5.6的最新版本之后,这个貌似就没问题!所以推荐大家还是都更新到最新版本吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏小败在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值