動的にメッシュ生成

Unity

実行中にメッシュを生成する方法です。

空オブジェクトを作成して、下記スクリプトを割り当てると
三角形が生成できます。
MeshRendererとMeshFilterコンポーネントが必要です。

    void Start()
    {
        MeshFilter filter = GetComponent<MeshFilter>();
        MeshRenderer r = GetComponent<MeshRenderer>();
        // Standardシェーダを割り当てたマテリアルを生成
        Material mat = new Material(Shader.Find("Standard"));

        Mesh mesh = new Mesh();

        // 頂点作成 配列数は3の倍数になるように
        mesh.vertices = new Vector3[]
        {
            new Vector3(0f, 0f, 0f),
            new Vector3(1f, 0f, 0f),
            new Vector3(0.5f, 1f, 0f)
        };

        // UV設定
        mesh.uv = new Vector2[]
        {
            new Vector2(0f, 0f),
            new Vector2(1f, 0f),
            new Vector2(0.5f, 1f)
        };

        // 頂点の接続順番
        mesh.triangles = new int[]
        {
            0, 1, 2
        };

        // メッシュフィルターにメッシュ設定
        filter.sharedMesh = mesh;
        // 作成したメッシュにマテリアルを割り当てる
        r.material = mat;
    }

コメント

タイトルとURLをコピーしました