[LayaAir3]微信小游戏Laya.loader.loadPackage 与 Laya.URL.basePath的互斥问题

微信小游戏启动时会自动触发一次Laya.loader.loadPackage,此时图集管理类会进行一次赋值
export class AtlasInfoManager {
static _fileLoadDic: Record<string, { url: string, baseUrl?: string }> = {};
}但是这时字典的key并不具有Laya.URL.basePath的值,导致后续赋值Laya.URL.basePath后,该字典就会失去作用从而无法正确加载图集里的图片。
目前有个绕开这个BUG的方法就是赋值Laya.URL.basePath后重新调用一次Laya.loader.loadPackage("", null, null)
调用成功后,字典的key会多出一份Laya.URL.basePath+资源路径的值,但是缺点是内存占用会存在二份。
 
其次是赋值Laya.URL.basePath后,图集管理类的字典内的每个key都附带了较长的远程路径。
已邀请:

Laya_Fred

赞同来自:

您好,这个问题在测试项目中的逻辑代码内再设置URL.basePath确实会出现这个问题,我们这边建议您在afterInit里面来配置URL.basePath来避免这个问题,或者直接使用我们的远程分包功能来加载远端资源内容,在afterInit里面设置好URL.basePath之后,这时候loadPackage之后,会将URL.basePath的内容写入到AtlasInfoManager里面去的,可以看下图:
设置afterInit里面的URL.basePath
Snipaste_2024-01-04_15-34-58.png

断点AtlasInfoManger的路径处理
Snipaste_2024-01-04_15-35-10.png

再将资源放置到具体的远端地址下面去,这样来处理应该是比较合适的;如果您有别的需求,可以在下面详细描述下,我来测试试下。

layaAir小孟

赞同来自:

您好,您的附件内容是什么呀,我下载后打开发现里面是一个空的txt文件

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

商务合作
商务合作