构建发布后,资源加载不全

情况如下:

在引擎编译时,cc.loader.loadRes 和 cc.loader.loadResDir 运行时是没有问题的。

但在构建发布后

在google浏览器中运行却出现了资源的问题,服务器404的错误

这种情况怎么解决?

其他的发布平台没试过,不知道会不会也这样。

构建完后要预览的话可以通过预览URL进行预览。

你这个是直接打开构建好的index.html文件看的吧?

如果不是,那么你可以看下,在浏览器中,这个不能加载的文件,是否可以直接通过URL访问到。

我是通过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);
        })

那个报错可以通过创建一个同名的文件解决。

我这边这个问题解决了,引擎先前获取的资源顺序和构建发布后的资源顺序不对,导致运行错误,我通过排序的方法改变了数组顺序,问题就得到了解决。这个:hole:,又误了我几个小时,不过有坑可以使我更加了解这个引擎,大家继续加油吧