Unity Mesh合并办法 – 实现换装 优化效率 模型合并
发表于2015-07-20
如标题所诉。mesh分离。可以实现一个人物用很多不同形状的武器或者装备什么的。同时分离可以优化效率。
那这里就有一个mesh如何合并的问题。unity提供了mesh合并的接口。
简单示例代码如下:
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <i><i><i> using UnityEngine; using System.Collections; using System.Collections.Generic; public class CombineMeshes : MonoBehaviour { void Start() { //获取MeshRender; MeshRenderer[] meshRenders = GetComponentsInChildren<MeshRenderer>(); //材质; Material[] mats = new Material[meshRenders.Length]; for ( int i = 0; i < meshRenders.Length; i++) { mats[i] = meshRenders[i].sharedMaterial; } //合并Mesh; MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; for ( int i = 0; i < meshFilters.Length; i++) { combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = meshFilters[i].transform.localToWorldMatrix; meshFilters[i].gameObject.SetActive( false ); } MeshRenderer mr = gameObject.AddComponent<MeshRenderer>(); MeshFilter mf = gameObject.AddComponent<MeshFilter>(); mf.mesh = new Mesh(); mf.mesh.CombineMeshes(combine, false ); gameObject.SetActive( true ); mr.sharedMaterials = mats; } }</i></i></i> |
创建了一个矩形 和一个 圆形。放在一个空物体下。将上面脚本绑定在空物体上。执行
效果如下:
将mesh合并成了一个。并赋值材质。
