[]如果想做3d 模型的渐隐要怎么做? 我没找到关于透明度的属性

已邀请:

田正传

赞同来自:

一直困于这个问题,今天彻底解决了!就和大家分享一下!在Laya 3.0.4中运行正确。直接上代码:
下面这个类只要放在项目中,调用方法示例:objVisibleCtrl.showObj(this.meshs,0,3000)    this.meshs是你要渐隐的MeshRenderer数组
---------------------------------------------------------------------------------------------------------------------------------------------
onst { regClass, property } = Laya;

@regClass()
export class objVisibleCtrl extends Laya.Script {
    /**
     * @param meshs 要改变透明度的MeshRenderer数组
     * @param alpha 透明度的目标值
     * @param duration 渐透明的过渡时间*/
    public static showObj(meshs:[Laya.MeshRenderer],alpha:number,duration:number){
        if (alpha>0.95) {
            for (let i = 0; i < meshs.length; i++) {
                for (let j = 0; j < meshs[i].materials.length; j++) {
                    let cr : Laya.Color = meshs[i].materials[j].getColor("u_DiffuseColor");
                    meshs[i].materials[j].materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
                    Laya.Tween.to(cr,{a:alpha,update:new Laya.Handler(this,()=>{meshs[i].materials[j].setColor("u_DiffuseColor",cr)})},duration,null,Laya.Handler.create(this,()=>{
                        meshs[i].material.materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_OPAQUE;
                    }))
                }           
            }
        }else if(alpha<0.1){
            for (let i = 0; i < meshs.length; i++) {
                for (let j = 0; j < meshs[i].materials.length; j++) {
                    let cr : Laya.Color = meshs[i].materials[j].getColor("u_DiffuseColor");
                    meshs[i].materials[j].materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
                    Laya.Tween.to(cr,{a:alpha,update:new Laya.Handler(this,()=>{meshs[i].materials[j].setColor("u_DiffuseColor",cr)})},duration,null,Laya.Handler.create(this,()=>{
                        meshs[i].material.materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
                    }))
                }           
            }
        }
    }
}

要回复问题请先

商务合作
商务合作