版本: Unity 6 (6000.0)
语言英语
  • C#

Mesh.CombineMeshes

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们会阅读用户提出的每个建议修改,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您的建议修改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void CombineMeshes(CombineInstance[] combine, bool mergeSubMeshes = true, bool useMatrices = true, bool hasLightmapData = false);

参数

combine 要合并的网格描述。
mergeSubMeshes 定义是否将网格合并到一个子网格中。
useMatrices 定义是否使用或忽略 CombineInstance 数组中提供的变换。
hasLightmapData 定义是否使用 CombineInstance 结构中的光照贴图缩放偏移数据来变换输入网格的光照贴图 UV 数据。

描述

将多个网格合并到此网格中。

合并网格有助于优化性能。

如果 mergeSubMeshes 为 true,则所有网格都将合并到一个子网格中。否则,每个网格都将放置在一个不同的子网格中。如果所有网格都共享同一个材质,则此属性应设置为 true。

如果 useMatrices 为 true,则使用 CombineInstance 结构中的变换矩阵。否则,它们将被忽略。

hasLightmapData 设置为 true,以使用 CombineInstance 结构中的光照贴图缩放偏移数据来变换输入网格的光照贴图 UV 数据。这些网格必须共享同一个光照贴图纹理。

为了使合并后的网格与父网格在使用该方法之前所处的位置相同,请保存父网格的位置和旋转,然后在合并网格之前将这些值设置为零。合并完成后,将父网格的位置和旋转设置回原始值。

using UnityEngine;
using System.Collections;

// Copy meshes from children into the parent's Mesh. // CombineInstance stores the list of meshes. These are combined // and assigned to the attached 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++; }

Mesh mesh = new Mesh(); mesh.CombineMeshes(combine); transform.GetComponent<MeshFilter>().sharedMesh = mesh; transform.gameObject.SetActive(true); } }