返回指定给网格过滤器的实例化 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 类。