一般导入资源的方法(资源地址是url):
1、
async preload(url){
await Laya.loader.load(url);
let tex = Laya.loader.getRes(url);
// use code
}
2、
Laya.loader.load(url, Laya.Handler.create(this, (tex)=>{
// use code
}))
如果需要导入一个资源重复使用,比如在一个for循环中给新建的材质赋予tex,比如:
for(let i = 0; i < 10; i++){
let mat = new Laya.UnlitMaterial();
// the way 1 or 2 before to get the tex
mat.albedoTexture = tex;
// use mat
}
你会得到一个报错,因为Laya.loader.load默认缓存创建的tex,你多次get出来的是同一个txture对象
正确使用tex的方法:
Laya.loader.load(temp.texture.path, Laya.Handler.create(this, (tex)=>{
mat.albedoTexture = tex;
}), null, Laya.Loader.TEXTURE2D, 0, false, "", true);
当然,你也可以用getres出来的texure,通过getPixels和setPixedls来创建新的texure,但是要注意传递的参数