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

MeshFilter.mesh

建议修改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册
public Mesh mesh;

描述

返回一个新的 mesh 或现有网格的副本,并将其分配给网格过滤器。

如果没有将网格分配给网格过滤器,则将创建一个新网格并分配给它。

如果网格过滤器已经分配了网格,则第一次查询 mesh 属性将创建该网格的副本,并返回此副本。对 mesh 属性的进一步查询将返回此重复的网格实例。一旦查询了 mesh 属性,指向原始共享网格的链接将丢失,并且 MeshFilter.sharedMesh 属性将成为 mesh 的别名。如果您想避免这种自动网格复制,请使用 MeshFilter.sharedMesh 代替。

通过使用 mesh 属性,您只能修改单个对象的网格。使用相同网格的其他对象将不会被修改。

您有责任在游戏对象被销毁时销毁自动实例化的网格。 Resources.UnloadUnusedAssets 也会销毁网格,但它通常只在加载新关卡时调用。

mesh 属性视为以下代码的快捷方式

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void Start() { Mesh mesh = GetComponent<MeshFilter>().sharedMesh; Mesh mesh2 = Instantiate(mesh); GetComponent<MeshFilter>().sharedMesh = mesh2; } }

它在第一次查询 mesh 属性时被调用。

注意
如果 MeshFilter 是资产对象的组成部分,则不允许查询 mesh 属性,只能分配资产网格。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { // Distorts the mesh vertically. void Update() { // Get instantiated mesh Mesh mesh = GetComponent<MeshFilter>().mesh; // Randomly change vertices Vector3[] vertices = mesh.vertices; int p = 0; while (p < vertices.Length) { vertices[p] += new Vector3(0, Random.Range(-0.3F, 0.3F), 0); p++; } mesh.vertices = vertices; mesh.RecalculateNormals(); } }

其他资源: Mesh 类。