第一、引擎不会一直去重试加载资源,需要开发者根据需要自行实现逻辑。
但是对于加载失败的资源,开发者可以修改默认的重载次数,以及重载的间隔时间,例如:
Laya.loader.retryNum = 10; //加载出错后的重试次数
Laya.loader.retryDelay = 1000;// 延迟时间多久再进行重试,不配置就是立即重试,单位是毫秒
第二、你的例子的逻辑存在BUG,导致了一直重新加载,却一直无法重新加载成功。
你的代码里,永远都去加载一个不存在的文件,他当然是一直按你的逻辑,总是在循环请求一个不存在的文件,然后就一直请求不成功了。
你没有进行修改文件名,只是改getRes里的文件名,当然也不可能重截成功了。
你应该在加载回调里,未获得资源的逻辑里去加载一个正确的资源,这时模拟请求资源成功,在重新加载的逻辑里,自然就走到了加载成功的逻辑里了。
示例修改如下,你自行研究一下吧。关于资源加载这块的引擎逻辑,引擎用了快十年了,不可能出现这种基础的BUG,您再仔细理解一下。
export class Script extends Laya.Script {
onAwake(): void {
Laya.loader.retryDelay = 100;
Laya.loader.retryNum = 3;
this.beginTest();
}
beginTest(fileName:string = "loadFailTest.lh") {
console.log("beginTest");
Laya.loader.load(fileName, Laya.Handler.create(this, () => {
if (!Laya.loader.getRes("loadFailTest1.lh")) {
//此时就算将loadFailTest1修改为loadFailTest,加载也无法成功
console.error("load failed");
Laya.timer.once(1000, this, () => {
this.beginTest("loadFailTest1.lh");
});
}
else {
console.log("load finish");
}
}));
}
}
下图是修改后的加载运行效果截图,当尝试无效后,引擎就不再尝试,交给开发者自己的逻辑重新加载,加载成功后,进入成功的逻辑打印。