项目publish出来后,jsb-default/res/import/目录下的文件名称,何时或何种操作会使其变更?

我的需求是从云端更新些资源到本地。不需要更新代码。

以前使用cocos2dx ,使用cc.fileUtils.setSearchPaths(searchPaths) 来控制读取资源的路径,只要文件名一致,是可以做到更新纯资源文件的。只需要资源的相对路径一致,绝对路径通过cc.fileUtils.setSearchPaths(searchPaths)来设置,设置优先级,即可做到更新云端资源。而之前的图片,场景资源,无论是使用cocosStudio,还是cocosBuilder,都没有复杂的关联,都是纯资源。

现在的creator的资源,有一个配置文件目录jsb-default/res/import/。里面有很多uuid创建的文件。
而creator里面的资源:
1 一个是会被很多个地方引用
2 一个是资源的属性,size什么的,可能在某个配置文件里面,更新后需要修改。否则我云端更新了一个图片,但是展示的是上一张图片的size,被拉伸了。

所以我要确认:
1 我按照以前的做法更新纯资源是否可行,有什么地方需要修改。
2 jsb-default/res/import下面的文件名,何时会被修改。因为路径一旦变了,就读不了。

感谢所有回复和提供帮助的朋友。

Creator 中有 jsb.fileUtils 接口,也可以设置 search path

更新 raw assets 是可以的,比如纯图片资源。但是合图那种带有导入数据的 Assets 类型则需要同时下载新的图片文件以及 import 文件夹中对应 uuid 的 json 文件。

这个文件名其实是按照 uuid 索引的,只要项目中资源的 uuid 不变,对应的 import 文件路径就不会变。

1赞

感谢回复~

也就是说, 只有asset文件夹下的文件,才可以使用我上述的方法进行更新。

我还有一个疑问:
像prefeb,scene这些文件需要更新(修改节点,修改关联的已有脚本等操作),有什么需要注意的?

还是要用类似热更新的思路,脚本去扫差异,然后决定需要更新哪些内容,否则人力判断不出来

我想云端添加场景。
我看了loadScene里面,是从cc.game._sceneInfos,里面找到匹配的scene然后加载。我的场景是云端添加的,cc.game._sceneInfo是不是就没有,所以加载不到?
cc.game._sceneInfo是不是就是构建发布的时候,勾选的那一堆------参与构建的场景?

我该如何做呢,要修改loadScene的实现,还是说cc.game._sceneInfos也是从某个json里面获取的,我替换那个json?

我的需求是,添加场景,添加prefab,添加图片.
但如果它们都是构建项目的时候就设定好的,那我云端如何添加呢?
是不是要更新settings.js文件?里面我看关联了所有资源的url和uuid哦。

引擎的逻辑并不支持云端添加scene,prefab和图片呀。

我初步看了下加载场景,图片,prefab的代码。
加载一个场景,它需要在setting.js里面才能找到对应的json。
然后场景里面所有的东西,也都需要在setting.js里面写好,才能找到最终的url。

单独load prefab和图片也是一样的。

所以我要是云端添加,是不是一定要改加载部分的源码了。否则各种json,url都取不到。
我看了主要是uuid-loader,CCAssetLibrary,CCDirector,CCLoader。LoadingItems是具体加载队列应该不用管。
C++那边应该不用改。

所以,native端我是修改每次构建出来的jsb_polyfill.js文件,还是有办法只修改一次,每次构建出来的都是我修改过的。

确实是需要定制那部分内容

可以定制 engine 仓库,重新 build 就可以一劳永逸了

http://cocos.com/docs/creator/advanced-topics/engine-customization.html

我使用定制引擎,构建的时候提示 Error: Cannot find module ‘uglify-js-harmony’
哦,应该是creator版本太低,引擎版本太高。

需要 npm install uglify-js-harmony