Объявление
public void CombineMeshes(CombineInstance[] combine, bool mergeSubMeshes = true, bool useMatrices = true, bool hasLightmapData = false);Параметры
combine | Описание мешей для объединения. |
mergeSubMeshes | Определяет, должны ли сетки объединяться в одну подсетку. |
useMatrices | Определяет, следует ли использовать преобразования, предоставленные в массиве CombineInstance, или игнорировать их. |
Описание
Объединяет несколько сеток в эту сетку.
Объединение сеток полезно для оптимизации производительности.
Если значение mergeSubMeshes
равно true, все сетки объединяются в одну подсетку. В противном случае каждая сетка помещается в другую подсетку. Если все сетки используют один и тот же материал, для этого свойства должно быть установлено значение true.
Если значение useMatrices
равно true, используются матрицы преобразования в структурах CombineInstance. В противном случае они игнорируются.
Установите для hasLightmapData
значение true, чтобы преобразовать входные UV-данные Mesh карты освещения с помощью данных смещения масштаба карты освещения в структурах CombineInstance. Меши должны иметь одну и ту же текстуру карты освещения.
using UnityEngine;
using System.Collections;
// Копируем сетки из дочерних в родительскую Mesh.
// CombineInstance хранит список мешей. Они объединены
// и присваивается присоединенной Mesh.
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
public class ExampleClass : MonoBehaviour
{
void Start()
{
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
CombineInstance[] combine = new CombineInstance[meshFilters.Length];
int i = 0;
while (i < meshFilters.Length)
{
combine[i].mesh = meshFilters[i].sharedMesh;
combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
meshFilters[i].gameObject.SetActive(false);
i++;
}
transform.GetComponent<MeshFilter>().mesh = new Mesh();
transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combine);
transform.gameObject.SetActive(true);
}
}