情况如下:
在引擎编译时,cc.loader.loadRes 和 cc.loader.loadResDir 运行时是没有问题的。
但在构建发布后
![]()
在google浏览器中运行却出现了资源的问题,服务器404的错误
这种情况怎么解决?
其他的发布平台没试过,不知道会不会也这样。
情况如下:
在引擎编译时,cc.loader.loadRes 和 cc.loader.loadResDir 运行时是没有问题的。
但在构建发布后
![]()
在google浏览器中运行却出现了资源的问题,服务器404的错误
这种情况怎么解决?
其他的发布平台没试过,不知道会不会也这样。
我是通过Google浏览器预览URL的,系统的防火墙都关闭了,并不能通过URL访问,仅仅提示 404 的报错

获取的资源类型是 SpriteFrame
在loadResDir中,第二个参数也设了cc.SpriteFrame了
但就是缺少一些图片,没有完全加载完这个文件中的图片
问题找到了,在构建发布运行后,获取到的资源顺序没有按照我想要的顺序获取到,大概是网络导致引擎的问题,至于解决暂时不知道怎么弄
1、打包出来后文件名都会改为md5文件名,所以直接用文件名访问不到的
大概是这样的一个形式:http://10.44.48.107:7456/build/res/raw-assets/02/0275e94c-56a7-410f-bd1a-fc7483f7d14a.png
2、ico文件不能被编辑器识别,如果放在resources文件夹下用cc.loader.loadRes的话没办法识别出资源类型。需要通过这样的方法才能读取ico文件并显示:
cc.loader.loadRes("favicon", (err, res) => {
if (err) {
cc.log(res);
return;
}
var sprite = this.node.getComponent(cc.Sprite);
var texture = new cc.Texture2D();
texture._nativeAsset = res._nativeAsset;
sprite.spriteFrame = new cc.SpriteFrame(texture);
})
3、如果是远程资源,使用cc.loader.load读取,读取到的是一个cc.Texture2D资源
cc.loader.load("https://xxxxx/favicon.ico", (err, res) => {
if (err) {
cc.log(res);
return;
}
var sprite = this.node.getComponent(cc.Sprite);
sprite.spriteFrame = new cc.SpriteFrame(res);
})
那个报错可以通过创建一个同名的文件解决。
我这边这个问题解决了,引擎先前获取的资源顺序和构建发布后的资源顺序不对,导致运行错误,我通过排序的方法改变了数组顺序,问题就得到了解决。这个
,又误了我几个小时,不过有坑可以使我更加了解这个引擎,大家继续加油吧