赞
踩
把多个模型的网格合并为一个网格。可以使用自己写代码,使用Unity自带的CombineMeshes方法,也可以使用资源商店的插件,在资源商店搜Mesh Combine可以搜索到相关的插件,例如Easy Mesh Combine Tool等插件。
可大幅度减少Batches数量 减少模型的顶点、面、材质、骨骼、蒙皮网格。
写代码使用CombineMeshes方法实现网格合并:
1.测试脚本挂载在需要合并的物体身上
2.代码逻辑
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MeshCombineTest : MonoBehaviour { // Start is called before the first frame update void Start() { CombineTest(); } public void CombineTest() { MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; Material[] mats = new Material[meshFilters.Length]; Matrix4x4 matrix = transform.worldToLocalMatrix; for (int i = 0; i < meshFilters.Length; i++) { MeshFilter mf = meshFilters[i]; MeshRenderer mr = meshFilters[i].GetComponent<MeshRenderer>(); if (mr == null) { continue; } combine[i].mesh = mf.sharedMesh; combine[i].transform = mf.transform.localToWorldMatrix * matrix; mr.enabled = false; mats[i] = mr.sharedMaterial; } //新建一个物体 用来接收合并后的数据 GameObject go = new GameObject("NewGameobject"); go.AddComponent<MeshFilter>(); go.AddComponent<MeshRenderer>(); //赋值位置信息 go.transform.localPosition = transform.localPosition; go.transform.localRotation = transform.localRotation; //赋值合并后的网格 MeshFilter thisMeshFilter = go.GetComponent<MeshFilter>(); Mesh mesh = new Mesh(); mesh.name = "Combined"; thisMeshFilter.mesh = mesh; mesh.CombineMeshes(combine, false); //赋值合并后的材质信息 MeshRenderer thisMeshRenderer = go.GetComponent<MeshRenderer>(); thisMeshRenderer.sharedMaterials = mats; thisMeshRenderer.enabled = true; MeshCollider thisMeshCollider = GetComponent<MeshCollider>(); if (thisMeshCollider != null) { thisMeshCollider.sharedMesh = mesh; } //合并后隐藏自己 gameObject.SetActive(false); } }
3.最终结果展示
合并后物体属性的展示
使用Easy Mesh Combine Tool插件实现网格合并:
1.打开unity资源商店 搜索Mesh Combine 添加插件到我的资源
2.打开Package Manager 找到这个插件点击右下角Download
3.下载完毕点击导入
4.把需要合并的物体放在一个空节点下
5.打开插件 Window–>Easy Mesh Combine Tool 选中需要合并的物体点击插件面板的Make Group and Combine进行网格合并
6.合并完成预览
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。