Version: 2022.2
public Mesh mesh ;

描述

Returns either a new mesh or a duplicate of the existing mesh, and assigns it to the mesh filter.

如果没有为网格过滤器指定网格,则会创建并指定新的网格。

If a mesh is assigned to the mesh filter already, then the first query of mesh property will create a duplicate of it, and this copy will be returned. Further queries of mesh property will return this duplicated mesh instance. Once mesh property is queried, link to the original shared mesh is lost and MeshFilter.sharedMesh property becomes an alias to mesh. If you want to avoid this automatic mesh duplication, use MeshFilter.sharedMesh instead.

使用 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 类。