[LayaAir3]Laya.Loader._load2()函数中,传给AtlasInfoManager.getFileLoadPath的参数有误


微信图片_20231129161622.png

目前传给 AtlasInfoManager.getFileLoadPath 的是 "formattedUrl" 这个变量,该变量已经拼接了 URL.basePath,而 AtlasInfoManager 在 fileconfig.json 中记录的是散图的“相对路径”,所以这里会取不到正确的 图集url。
应该是传入 "url" 这个变量才对。
已邀请:

layaAir小孟

赞同来自:

您好,经过排查,原来的formattedUrl是正确的。

看到您的Demo中有如下代码:
if (Laya.Browser.onMiniGame) {
            console.log(`当前是微信小游戏平台`);
            Laya.URL.basePath = "http://10.3.91.42:8000";
        }
我问了下大佬,解释是这样的:basePath不能这样改成远程,因为自动图集载入时,还没到这个basePath修改的地方。也就是自动图集生成映射时,这个basePath还是旧的。

正确的做法是:在开发时,资源依然放在本地,从本地引用。然后在发布时,将需要放在远端的资源分包,并设置为远程包即可。

注:分包的文档
https://layaair.com/3.1/doc/released/web/readme.html#26-%E8%B5%84%E6%BA%90%E5%88%86%E5%8C%85 )

layaAir小孟

赞同来自:

您好,感觉您是在调试过程中,发现的此问题。可以发一份调试demo吗,或者简述一下复现流程。

Junho

赞同来自:

你好,这是复现 DEMO。
 
相关说明:
# 请为【项目根目录/release/cdn】这个目录架设 http 服务(我测试时是在该目录下使用 anywhere——p.s.: 一个 nodejs 库)。然后用微信开发者工具运行【项目根目录/release/wxgame】这个工程。
# 默认情况下,运行结果应该会在屏幕中央出现一个按钮,但它只有文字,缺少 skin。因为我说的本帖子这个问题,加载相关图集失败了。
# 若要让图集加载成功,可去掉这里的注释:Main.ts 第 11 行,也就是让【EngineExt.init();】这行代码得到执行。里面做的事情就是把 formattedUrl 转换回原 url(即不带 basePath 的版本)。
 
p.s.: 若在原回答中直接回复,无法在社区通知中收到相关提示,所以现在才看到你的回复。
 

Junho

赞同来自:

发现 release 目录被默认忽略了,已重新放入 zip 里面。请查收。

layaAir小孟

赞同来自:

收到,非常感谢您的详细讲解,我已经成功复现问题,并按照您的更改方式解决了问题。再次感谢您的宝贵建议~

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作