[]我浏览在线文档 关于共享材质和自身材质的代码 貌似没有什么不同?
https://ldc.layabox.com/doc/?nav=zh-ts-4-0-6
获取并修改自身材质:
......
//添加3D场景-----------------------
this.scene = new Laya.Scene();
Laya.stage.addChild(this.scene);
//方法一:直接异步加载
// var mesh:Laya.Mesh = Laya.Mesh.load("LayaScene_01/Assets/model/loveScene_jianzhu.lm");
// var meshSprite3D:Laya.MeshSprite3D = new Laya.MeshSprite3D(mesh);
//方法二:预加载,创建为Sprite3D类型
Laya.loader.create("LayaScene_01/Assets/model/loveScene_jianzhu.lm",Laya.Handler.create(this,this.onCreateComplete));
//预加载完成后回调
private onCreateComplete():void
{
//创建预加载的模型网格
var mesh:Laya.Mesh = Laya.loader.getRes("LayaScene_01/Assets/model/loveScene_jianzhu.lm");
//创建3D模型
var meshSprite3D:Laya.MeshSprite3D = new Laya.MeshSprite3D(mesh);
this.scene.addChild(meshSprite3D);
}
获取并修改共享材质:
//加载导出的卡车模型
this.role3D = Laya.Sprite3D.load("LayaScene_truck/truck.lh");
//模型与材质加载完成监听与回调
this.role3D.on(Laya.Event.HIERARCHY_LOADED,this,this.onLoadComplete);
this.scene.addChild(this.role3D);
//模型与材质加载完成后回调
private onLoadComplete():void{
//获取车身模型(查看.lh文件,模型中两个对象,车头“head”与车身“body”,它们都用同一个材质)
var meshSprite3D:Laya.MeshSprite3D = this.role3D.getChildAt(0).getChildAt(0) as Laya.MeshSprite3D;
//从模型上获取共享材质
var shareMaterial:Laya.StandardMaterial = meshSprite3D.meshRender.material as Laya.StandardMaterial;
//修改材质的反射颜色,让模型偏红
shareMaterial.albedo = new Laya.Vector4(1,0,0,1);
}
-----
看起来只是变量名字不同 shareMaterial. 我不太懂材质。原因是因为,引用的相同材质的模型,只要材质变了。模型的材质都会变。和代码操控没有关系是吗?
获取并修改自身材质:
......
//添加3D场景-----------------------
this.scene = new Laya.Scene();
Laya.stage.addChild(this.scene);
//方法一:直接异步加载
// var mesh:Laya.Mesh = Laya.Mesh.load("LayaScene_01/Assets/model/loveScene_jianzhu.lm");
// var meshSprite3D:Laya.MeshSprite3D = new Laya.MeshSprite3D(mesh);
//方法二:预加载,创建为Sprite3D类型
Laya.loader.create("LayaScene_01/Assets/model/loveScene_jianzhu.lm",Laya.Handler.create(this,this.onCreateComplete));
//预加载完成后回调
private onCreateComplete():void
{
//创建预加载的模型网格
var mesh:Laya.Mesh = Laya.loader.getRes("LayaScene_01/Assets/model/loveScene_jianzhu.lm");
//创建3D模型
var meshSprite3D:Laya.MeshSprite3D = new Laya.MeshSprite3D(mesh);
this.scene.addChild(meshSprite3D);
}
获取并修改共享材质:
//加载导出的卡车模型
this.role3D = Laya.Sprite3D.load("LayaScene_truck/truck.lh");
//模型与材质加载完成监听与回调
this.role3D.on(Laya.Event.HIERARCHY_LOADED,this,this.onLoadComplete);
this.scene.addChild(this.role3D);
//模型与材质加载完成后回调
private onLoadComplete():void{
//获取车身模型(查看.lh文件,模型中两个对象,车头“head”与车身“body”,它们都用同一个材质)
var meshSprite3D:Laya.MeshSprite3D = this.role3D.getChildAt(0).getChildAt(0) as Laya.MeshSprite3D;
//从模型上获取共享材质
var shareMaterial:Laya.StandardMaterial = meshSprite3D.meshRender.material as Laya.StandardMaterial;
//修改材质的反射颜色,让模型偏红
shareMaterial.albedo = new Laya.Vector4(1,0,0,1);
}
-----
看起来只是变量名字不同 shareMaterial. 我不太懂材质。原因是因为,引用的相同材质的模型,只要材质变了。模型的材质都会变。和代码操控没有关系是吗?
没有找到相关结果
已邀请:
1 个回复
ymsdandan
赞同来自: woody1720596907