Laya使用同一个图片资源导入为texture2D并同时使用

这篇博客介绍了在LayaAir引擎中如何正确导入和重复使用资源,特别是纹理(texture)。当在循环中为多个材质赋值同一纹理时,需要注意Laya.loader.load的默认缓存行为会导致所有材质引用同一纹理对象。为避免错误,可以使用异步预加载或指定加载选项来确保每个材质获取独立的纹理实例。同时,还提到了通过getPixels和setPixels创建新纹理的方法,但需谨慎处理参数。
摘要由CSDN通过智能技术生成

一般导入资源的方法(资源地址是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,但是要注意传递的参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值