如何降低网站相似度,网站所有者是什么意思,下载淘宝购物网,网站开发制作入什么科目在上一篇中#xff0c;组合的是同一个材质球的网格#xff0c;如果其中有不一样的材质球会发生什么#xff1f;如下图#xff1a;
将场景中的一个物体替换为不同的材质球 运行之后#xff0c;就变成了相同的材质。 要实现组合不同材质的网格步骤如下#xff1a; 在父物体…在上一篇中组合的是同一个材质球的网格如果其中有不一样的材质球会发生什么如下图
将场景中的一个物体替换为不同的材质球 运行之后就变成了相同的材质。 要实现组合不同材质的网格步骤如下 在父物体上添加不同的材质球 然后在组合时先将相同材质的物体组合再将不同材质的物体组合但是组合为一个mesh后因为是两个材质球会调用绘制两次。 代码如下
public class MeshCombine2 : MonoBehaviour
{public GameObject[] obj1;public GameObject[] obj2;public void Start(){this.MeshCombine();}void MeshCombine(){MeshFilter[] meshFilters GetComponentsInChildrenMeshFilter();ListCombineInstance combine1 new ListCombineInstance(obj1.Length);ListCombineInstance combine2 new ListCombineInstance(obj2.Length);for (int j 0; j meshFilters.Length; j){MeshFilter meshFilter meshFilters[j];CombineInstance l_combine new CombineInstance();MeshRenderer meshRender meshFilter.GetComponentMeshRenderer();string materialName meshRender.material.name.Replace( (Instance), );if (materialName Grass){l_combine.mesh meshFilter.mesh;l_combine.transform meshFilter.transform.localToWorldMatrix;combine2.Add(l_combine);}else{l_combine.mesh meshFilter.mesh;l_combine.transform meshFilter.transform.localToWorldMatrix;combine1.Add(l_combine);}meshFilter.gameObject.SetActive(false);}Mesh obj1Mesh new Mesh();obj1Mesh.CombineMeshes(combine1.ToArray());Mesh obj2Mesh new Mesh();obj2Mesh.CombineMeshes(combine2.ToArray());CombineInstance[] combine new CombineInstance[2];combine[0].mesh obj1Mesh;combine[0].transform this.transform.localToWorldMatrix;combine[1].mesh obj2Mesh;combine[1].transform this.transform.localToWorldMatrix;Mesh mesh new Mesh();mesh.CombineMeshes(combine,false);transform.GetComponentMeshFilter().sharedMesh mesh;transform.gameObject.SetActive(true);}
}
参考链接
Unity 与 C# 中的动态网格组合 - 组合不同颜色的网格 |哈布拉多 (habrador.com)