Version: 2021.3
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 类。