返回介绍

Mesh.CombineMeshes 合并网格

发布于 2019-12-18 15:38:01 字数 3925 浏览 1211 评论 0 收藏 0

JavaScript => public function CombineMeshes(combine: CombineInstance[], mergeSubMeshes: bool = true, useMatrices: bool = true): void;
C# => public void CombineMeshes(CombineInstance[] combine, bool mergeSubMeshes = true, bool useMatrices = true);

Parameters 参数

combineDescriptions of the meshes to combine.
要合并的网购。
mergeSubMeshesShould all meshes be combined into a single submesh?
所有网格合并为单个子网格。
useMatricesShould the transforms supplied in the CombineInstance array be used or ignored?
CombineInstance数组提供的变换使用和是忽略。

Description 描述

Combines several meshes into this mesh.

合并几个网格到该网格。

Combining meshes is useful for performance optimization. If mergeSubMeshes is true, all the meshes will be combined to a single submesh. Otherwise each mesh will go into a different submesh. If all meshes share the same material, set this to true. If useMatrices is false, the transform matrices in CombineInstance structs will be ignored.

合并网格对于优化性能很有用。如果mergeSubMeshes为true,所有的网格合并到单个的子网格,否则每网格将合并到不同的子网格,如果所有网格共享同一材质,设置这个为true。如果useMatrices为false,在CombineInstance结构变换矩阵将被忽略。

JavaScript:

	@script RequireComponent(MeshFilter)
	@script RequireComponent(MeshRenderer)
	function Start () {
		var meshFilters: MeshFilter[] = GetComponentsInChildren(MeshFilter);
		var combine : CombineInstance[] = new CombineInstance[meshFilters.Length];
		for (var i = 0; i < meshFilters.Length; i++){
			combine[i].mesh = meshFilters[i].sharedMesh;
			combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
			meshFilters[i].gameObject.active = false;
		}
		transform.GetComponent.<MeshFilter>().mesh = new Mesh();
		transform.GetComponent.<MeshFilter>().mesh.CombineMeshes(combine);
		transform.gameObject.active = true;
	}

C#:

using UnityEngine;
using System.Collections;
 
[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.active = false;
            i++;
        }
        transform.GetComponent<MeshFilter>().mesh = new Mesh();
        transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combine);
        transform.gameObject.active = true;
    }
}

Mesh

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文