首页 > 解决方案 > 实体可以共享相同的材料吗?

问题描述

我有多个实体,我想共享相同的材料。因此,如果我对材质属性进行更改,则会在场景中使用该材质的所有实体上更新属性。

这可能吗?如果是这样,怎么办?

标签: aframe

解决方案


手动创建材质并附加到网格:

var material = new THREE.SomeMaterial();

AFRAME.registerComponent('my-material', {
  this.el.getObject3D('mesh').material = material;  
});

<a-entity geometry my-material></a-entity>

然后您可以随时手动操作材质,它会自动应用于所有使用它的实体/网格(例如,material.color.set(0.5, 0.5, 0.5))。

mixin 方法也有效,但效率稍低且更抽象


推荐阅读