【Unity】DrawMesh初歩と動的Mesh生成
DrawMesh
APIはこれです.
これを使うことでアクティブなGameObjectを存在させずにMeshを描くことができます.
つまりその分軽量なわけです.
大抵は膨大な数(1,000,000とか)のパーティクルを扱う際に活躍する技術のようですが,
今回は初歩的に一つのMeshを描きます.
Meshは事前に用意せずに動的に生成してみます.
動的なMeshの生成に関してはこちらの記事がわかりやすいです.
コード
using UnityEngine; public class DynamicMeshUsingDrawMesh : MonoBehaviour { [SerializeField] Material m_mat; Mesh m_mesh; void Start () { // 動的Mesh生成 m_mesh = new Mesh(); m_mesh.vertices = new Vector3[] { new Vector3 (-0.5f, -0.5f), new Vector3 (0.5f, -0.5f), new Vector3 (0.5f, 0.5f), new Vector3 (-0.5f, 0.5f), }; m_mesh.uv = new Vector2[] { new Vector2(0,0), new Vector2(1f,0), new Vector2(1f,1f), new Vector2(0,1f), }; m_mesh.triangles = new int[] { 0, 1, 2, 0, 2, 3, }; m_mesh.RecalculateNormals(); m_mesh.RecalculateBounds(); } private void Update() { Graphics.DrawMesh(m_mesh, Vector3.zero, Quaternion.identity, m_mat, 0); } }
マテリアルはなんでもいいですが,今回は適当に赤いマテリアルをつけます.
実行結果
動的にMeshを生成して描画できました.