合并网格和合并材质球

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CombineMesh : MonoBehaviour
{
public GameObject[] Filters;//合并网格的对象集合
// Start is called before the first frame update
void Start()
{
Mesh mesh = new Mesh();//创建网格对象
List<CombineInstance> combines = new List<CombineInstance>();//创建合并实例集合
List<Material> materials = new List<Material>();//材质球集合
for (int i = 0; i < Filters.Length; i++)//遍历需要合并对象的集合
{
CombineInstance combine = new CombineInstance();//创建合并实例对象
combine.mesh = Filters[i].GetComponent<MeshFilter>().mesh;//从每一个合并对象的网格渲染器上获取网格
combine.transform = Filters[i].transform.localToWorldMatrix;
combines.Add(combine);//添加至合并实例集合
materials.Add(Filters[i].GetComponent<MeshRenderer>().material);//获取材质添加至材质球集合
}
mesh.CombineMeshes(combines.ToArray(),false);//合并网格,不合并子网格
GetComponent<MeshFilter>().mesh = mesh;//网格赋值
GetComponent<MeshRenderer>().materials = materials.ToArray() ;//材质球赋值
}

// Update is called once per frame
void Update()
{

}
}

posted @   陈晨111  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示