时隔这么久,我终于想起来我还有一个博客了。。那就更新一点内容吧,关于项目中我遇到的很恶心的错误提示。
前提:
项目中图片资源比较多,于是我就把他全部放在Texture文件下,设置为bundle,利用bundle来加载资源并动态替换游戏图片资源。一切准备就绪,在游戏启动时调cc.assetManager.loadBundle(“Texture”, (e) => { }) 加载texture包,后续在通过cc.assetManager.getBundle(“Texture”).load加载具体资源,一切看起来那么顺利,甚至在本地浏览器上畅通无阻。
问题:
设置图片资源时我是这么写的:
let bundle = cc.assetManager.getBundle("Texture");
if (!bundle) {
return;
}
bundle.load(spName, cc.Texture2D, (err, tex: cc.Texture2D) => {
if (err != null) {
cc.error("读取文件错误:", err);
}
var spf = new cc.SpriteFrame(tex);
if (callBack) {
callBack(spf)
}
})
然后打包在微信端跑,一直提示我Error Bundle Texture doesn‘t contain xx,我一看,好像哪哪都没问题呀,怀疑编译器出了问题(狗头)
解决:
然后我就去看了打包后的该图片资源json配置文件,上面写的
于是我把代码改成了:
let bundle = cc.assetManager.getBundle("Texture");
if (!bundle) {
return;
}
bundle.load(spName, cc.SpriteFrame, (err, tex: cc.SpriteFrame) => {
if (err != null) {
cc.error("读取文件错误:", err);
}
if (callBack) {
callBack(tex)
}
})
顺利跑通,完结撒花。我的猜测是因为它本身就是个spriteFrame类型,所以bundle加载下来的类型用texture2D才会报错。有什么理解不对的地方欢迎更正。