メッシュフィルターに割り当てられた Mesh を返します
メッシュがメッシュフィルターに割り当てられていない場合、新しいメッシュが作成され割り当てられます。
メッシュがメッシュフィルターに割り当てられている場合は、mesh
プロパティーの初回の照会時に複製が作成され、コピーを
返します。mesh
プロパティーはメッシュのインスタンスを複製したものを返します。
いったん mesh
プロパティーはクエリーされてオリジナルの共有メッシュへのリンクが失われ、MeshFilter.sharedMesh プロパティーが mesh
へのエイリアスになります。
メッシュが自動で複製されてしまうのを避けたい場合は、代わりに MeshFilter.sharedMesh を使用してください。mesh
プロパティーを使用することによって、1 つのオブジェクトのみのメッシュを変更することができます。
同じメッシュが使用されている他のオブジェクトは変更されません。
ゲームオブジェクトが破壊されるとき、自動的にインスタンス化されたメッシュは手動で破壊する必要があります。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
プロパティーの最初の問い合わせ(query)で呼び出されます。
Note:
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 クラス