返回指定给网格过滤器的实例化 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
属性的第一个查询时调用的内容。
Note:
If MeshFilter is a part of an asset object, quering mesh
property is not allowed and only asset mesh can be assigned.
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 类。