动态热更后loadRes的问题

环境xcode模拟器。
我在iOS模拟器沙盒的document中新建了一个热更的文件夹HotUpdate,这个文件夹里就是res文件夹,包含raw-assets/resource/texture/2.jpg。
在程序运行中用jsb.fileUtils.setSearchPaths指定该HotUpdate文件夹,并且设为搜索数组的第一个。
用jsb.fileUtils.isFileExist(cc.urlraw(“resources/texture”)),已能检测到该文件夹的存在
接下来的问题就是我用cc.loader.loadRes(“texture/2”,cc.SpriteFrame,function(err,spriteFrame))加载该图片,提示cc.SpriteFrame in “texture/2” does not exist.

简单的来说就是动态更新后指定了SearchPath,loadRes却加载不了,是缺了其它步骤还是什么原因?有人能帮忙吗?

热更新后,需要重启游戏~~~

已重启多次,还是加载不了,我的setSearchPaths是写在其它脚本里,不在main.js。
是不是setSearchPaths必须写在man.js里面,并且在其它初始化之前设置?

是的,因为脚本的 require 是在 main.js 中完成的,如果之后再设置 search path 相当于你的脚本其实用的还是旧的

我在mian.js里设置了searchPath。还是加载不到资源,loadRes是如何去寻找资源的?

      //获取沙盒存储路径
       let localCityPath = jsb.reflection.callStaticMethod("CityResourceManager","localCityResourceDir");
        //设置searchPath
        var searchPaths = jsb.fileUtils.getSearchPaths();
        searchPaths.unshift(localCityPath);
        jsb.fileUtils.setSearchPaths(searchPaths);
        
       //判断路径是否存在
        let texturePath = cc.url.raw("resources/Texture");
        if(jsb.fileUtils.isFileExist(texturePath)){
            console.log("texture exist!")
        }else{
            console.log("texture not exist!");
        }
    
        //加载图片
        cc.loader.loadRes("Texture/1",cc.SpriteFrame,function(err,mapSpriteFrame){
            if(err){
                console.log(err.message);
            }else{
                console.log("load success");
            }
        });

运行后结果就是
texture exist!
cc.SpriteFrame in “Texture/1” does not exist.

你是不是热更新的时候没有更新 src/settings.js ?

这种情况下是无法让 AssetsLibrary 获知新的 raw assets 的存在的,这些资源都会在 settings 中定义 url - uuid 映射。所以 Loader 也就加载不到。如果只是一个 texture 还比较好解决

cc.loader.load(cc.url.raw("resources/Texture/1.png"), function (err, texture) {
});

但是 spriteFrame 信息是保存在 uuid 中的, 所以自然必须要有 settings 中的定义。

果然是这个问题,谢谢

热更新更新下来的settings在热更新的文件下,但是自动重启的时候好像是从main。js的onStart开始的,没有重新require新的settings,有什么方式可以重新require到热更新下来的settings么?现在就是重启黑屏,报Failed to load scene: Error: [AssetLibrary] loading JSON or dependencies failed: Download text failed: res/import/04/041686f93.json,creator版本1.5.1

1赞

现在load单个资源可以设置进度回调么?有些音频视频文件会加载很久,想显示进度。

怎么解决的啊??搞好了吗

对,我也是没有重新require新的settings,导致没法转换场景,想问一下解决了吗