3.8 关于SearchPath的疑问,求解惑

版本 v3.8.1

我做了个用于热补丁的场景:HotfixScene,这个场景的脚本构建后会生成到 assets/main/index.js 里。
理论上,如果我更新了HotfixScene的脚本,那对应的index.js也会被下载到我设置的local storage里,然后在下一次启动游戏的时候,会使用新的脚本; 但是实际上不会,用的还是老的脚本。

我在HotfixScene脚本的 onLoad 里用 jsb.fileUtils.getSearchPaths() 看到的SearchPath里确实包含了local storage的路径。

疑惑的还有一点,热更新文档里一直强调,要保存local storage的路径,并且在启动脚本main.js里插入一段代码,将保存的的路径添加到SearchPath头部,这样才能启用更新的内容。 我能理解这样操作的必要性,但是即使我没写这样代码,当热补丁完成以后,我发现SearchPath里已经包含了local storage的路径了,重新启动游戏后也是包含的,而且确实更新的资源和脚本都是有效的,除了HotfixScene这个特例(assets/main/index.js)。

补充说明下,我只有HotfixScene脚本和对应的场景图片资源没有设置bundle,其他的游戏资源和脚本都在一个bundle里

时隔2个月,希望有牛人或者官方能个回复,先谢谢

再时隔2个月,希望官方能给个回复

1赞

问题我没看 给你的坚持不懈点个赞 :+1:

“启动脚本main.js里插入一段代码,将保存的的路径添加到SearchPath头部”

这是你原先就加好的还是补丁加的?

image

如果不修改引擎代码的情况下,默认这两个文件是无法更新的,因为官方推荐的设置热更搜索目录在main.js中,意思就是c++这边掉用web-adapter.js和main.js时是没有添加热更搜索路径,使用的还是原始包里面的文件。如果需要支持这两个文件热更,则需要在c++层面提前设置好热更目录,而不是在到main.js设置

这句话是官方文档里说的,他的意思是需要再main.js 加一下搜索路径,后面的热更新内容才会有效,但是我实测下来,不加也有效,应为SearchPath已经是对的了

对的,但是大部分的游戏内容更新,根本不会改到main.js 和 web-adapter.js 所以,这2个文件的更新,不在我的关注点内, 我只是想比较明确的了解,为什么官方文档一再强调要自己添加 一段代码来增加 SearchPath,但是我实际用下来根本不需要

官方没做游戏,可能不知道对具体需求不太了解吧 :laughing:?开发者遇到的情况很多,应用场景也很广。按需调整代码