首先我们需要再3d场景创建一个空对象,把脚本挂给空对象
然后创建3D物体进行合并
然后我们在吧自己的MeshFiler和MeshRanderer拖上去
脚本代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HeBing : MonoBehaviour
{
public MeshFilter[] meshFilters;//合并网格过滤器的集合
public MeshFilter meshFilter;//自身的网格过滤器
public MeshRenderer[] Resnderers;//网格渲染器
public MeshRenderer meshRanderer;//自身的网格渲染器
// Start is called before the first frame update
void Start()
{
Mesh mesh = new Mesh();//初始化mesh
List<Material> materials = new List<Material>();//合并对象的材质集合
List<CombineInstance> combines = new List<CombineInstance>();//组合集合
//给combines中的子类赋值
for (int i = 0; i < meshFilters.Length; i++)
{
CombineInstance combine = new CombineInstance();
combine.mesh = meshFilters[i].mesh;
combine.transform = meshFilters[i].transform.localToWorldMatrix;
combines.Add(combine);
foreach (var item in Resnderers[i].materials)
{
materials.Add(item);//添加到集合中
}
}
mesh.CombineMeshes(combines.ToArray(), false);//给mesh中的CombineMeshes赋值
meshFilter.mesh = mesh;//给网格过滤器的mesh赋值
meshRanderer.materials = materials.ToArray();//给网格渲染赋材质
}
// Update is called once per frame
void Update()
{
}
}