在发送到mesh filter unity c之前,我可以将网格添加到一起吗

在发送到mesh filter unity c之前,我可以将网格添加到一起吗,filter,unity3d,mesh,Filter,Unity3d,Mesh,这个问题是统一c中的一般问题 我知道我不能有多个网格过滤器 但是我在一个脚本中生成了不止一个网格,我想在一个对象中一次性渲染所有网格,但我不想合并顶点数组,这样我仍然可以动态删除面 基本思想是将体素作为一个游戏对象,但通过脚本由不同的面组成 我想在不进入巨大阵列的情况下保持面部的可访问性 所以现在我有6个面作为网格,我不知道如何渲染它们 做这件事最好的方法是什么,最好的方法是什么,这里没有答案,所以我有一些答案,但仍然需要关于概念方法的指导 所以我重写了我的体素,但现在我在考虑写一系列函数来破坏

这个问题是统一c中的一般问题 我知道我不能有多个网格过滤器 但是我在一个脚本中生成了不止一个网格,我想在一个对象中一次性渲染所有网格,但我不想合并顶点数组,这样我仍然可以动态删除面

基本思想是将体素作为一个游戏对象,但通过脚本由不同的面组成 我想在不进入巨大阵列的情况下保持面部的可访问性

所以现在我有6个面作为网格,我不知道如何渲染它们


做这件事最好的方法是什么,最好的方法是什么,这里没有答案,所以我有一些答案,但仍然需要关于概念方法的指导 所以我重写了我的体素,但现在我在考虑写一系列函数来破坏那些不需要的脸,但问题是,如果我把我的三角形放在0上,我认为这是最容易的,这不像释放任何内存,它只是不可见,所以这不是一个好办法

有人会怎么做一些优化的体素呢

我想从我的代码中你会明白我是一个初学者

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshCollider))]
public class Voxel : MonoBehaviour {

public Vector3 position ;

const float V = 0.5f;
Vector3[] vertices ;
int[] triangles;
Vector2[] uv ;
Mesh mesh ;

void Start () {
    vertices = new Vector3[24];
    triangles = new int[36];
    uv = new Vector2[24];
    mesh = new Mesh();

    Front ();
    Right ();
    Back ();
    Left ();
    Top ();
    Bottom ();

    renderMesh ();
}
public void renderMesh(){
    mesh.Clear();
    mesh.vertices = vertices;
    mesh.triangles = triangles;
    mesh.uv = uv;
    mesh.Optimize();
    mesh.RecalculateNormals();

    MeshFilter mesh_filter = GetComponent<MeshFilter>();
    MeshCollider mesh_collider = GetComponent<MeshCollider>();
    mesh_filter.mesh = mesh;
    mesh_collider.sharedMesh = mesh;
}

public void Front(){
    vertices[0] = new Vector3(-V,V,-V);//fronttopleft
    vertices[1] = new Vector3(V,V,-V);//fronttopright
    vertices[2] = new Vector3(-V,-V,-V);//frontbottomleft
    vertices[3] = new Vector3(V,-V,-V);//frontbottomright
    triangles[0] = 0;//front polys
    triangles[1] = 1;
    triangles[2] = 3;
    triangles[3] = 0;
    triangles[4] = 3;
    triangles[5] = 2;
    uv[0] = new Vector2(0,1); 
    uv[1] = new Vector2(1,1);
    uv[2] = new Vector2(0,0);
    uv[3] = new Vector2(1,0);
}
public void Right(){
    vertices[4] = new Vector3(V,V,-V);
    vertices[5] = new Vector3(V,V,V);
    vertices[6] = new Vector3(V,-V,-V);
    vertices[7] = new Vector3(V,-V,V);
    triangles[6] = 4;
    triangles[7] = 5;
    triangles[8] = 7;
    triangles[9] = 4;
    triangles[10] = 7;
    triangles[11] = 6;
    uv[4] = new Vector2(0,1); 
    uv[5] = new Vector2(1,1);
    uv[6] = new Vector2(0,0);
    uv[7] = new Vector2(1,0);
}
public void Back(){
    vertices[8] = new Vector3(V,V,V);
    vertices[9] = new Vector3(-V,V,V);
    vertices[10] = new Vector3(V,-V,V);
    vertices[11] = new Vector3(-V,-V,V);
    triangles[12] = 8;
    triangles[13] = 9;
    triangles[14] = 11;
    triangles[15] = 8;
    triangles[16] = 11;
    triangles[17] = 10;
    uv[8] = new Vector2(0,1); 
    uv[9] = new Vector2(1,1);
    uv[10] = new Vector2(0,0);
    uv[11] = new Vector2(1,0);
}
public void Left(){
    vertices[12] = new Vector3(-V,V,V);
    vertices[13] = new Vector3(-V,V,-V);
    vertices[14] = new Vector3(-V,-V,V);
    vertices[15] = new Vector3(-V,-V,-V);
    triangles[18] = 12;
    triangles[19] = 13;
    triangles[20] = 15;
    triangles[21] = 12;
    triangles[22] = 15;
    triangles[23] = 14;
    uv[12] = new Vector2(0,1); 
    uv[13] = new Vector2(1,1);
    uv[14] = new Vector2(0,0);
    uv[15] = new Vector2(1,0);
}
public void Top(){
    vertices[16] = new Vector3(-V,V,V);
    vertices[17] = new Vector3(V,V,V);
    vertices[18] = new Vector3(-V,V,-V);
    vertices[19] = new Vector3(V,V,-V);
    triangles[24] = 16;
    triangles[25] = 17;
    triangles[26] = 19;
    triangles[27] = 16;
    triangles[28] = 19;
    triangles[29] = 18;
    uv[16] = new Vector2(0,1); 
    uv[17] = new Vector2(1,1);
    uv[18] = new Vector2(0,0);
    uv[19] = new Vector2(1,0);
}
public void Bottom(){
    vertices[20] = new Vector3(V,-V,V);
    vertices[21] = new Vector3(-V,-V,V);
    vertices[22] = new Vector3(V,-V,-V);
    vertices[23] = new Vector3(-V,-V,-V);
    triangles[30] = 20;
    triangles[31] = 21;
    triangles[32] = 23;
    triangles[33] = 20;
    triangles[34] = 23;
    triangles[35] = 22;
    uv[20] = new Vector2(0,1); 
    uv[21] = new Vector2(1,1);
    uv[22] = new Vector2(0,0);
    uv[23] = new Vector2(1,0);
}
}