Finally mananged to have 1 gameobject that created several 1x1x1 cube meshes and stiches them together. When the program runs it creates 10x10x10 cube, but it takes about 10 seconds to load and uses 300mb memory. what is wrong!?
NewMesh Class:
public class NewMesh : MonoBehaviour {
void Start()
{
}
public static Mesh ExtendMesh(Mesh first,Mesh second,int counter)
{
int [] trianglesooo = second.triangles;
for (int i = 0; i < trianglesooo.Length;i++)
{
trianglesooo _+=8*counter;_
-
}*
-
Vector3[] Lvertices = new Vector3[first.vertices.Length + second.vertices.Length];*
-
int[] Ltriangles = new int[first.triangles.Length + trianglesooo.Length]; *
-
first.vertices.CopyTo(Lvertices , 0);*
-
second.vertices.CopyTo(Lvertices,first.vertices.Length);*
-
first.triangles.CopyTo(Ltriangles , 0);*
-
trianglesooo.CopyTo(Ltriangles,first.triangles.Length);*
-
second.vertices = Lvertices;*
-
second.triangles = Ltriangles;*
-
return second; *
}
public static Mesh createNewMesh(Vector3 position)
{
Mesh returnMesh = new Mesh();
returnMesh.name = “Chunk” + position;
- Vector3 vertices = new Vector3[8] {new Vector3(Mathf.Floor(position.x) , position.y, Mathf.Floor(position.z ) ),*
-
new Vector3((Mathf.Floor(position.x) + 1) , position.y, Mathf.Floor(position.z ) ),*
-
new Vector3(Mathf.Floor(position.x) , position.y, (Mathf.Floor(position.z ) + 1) ),*
-
new Vector3((Mathf.Floor(position.x) + 1) , position.y, (Mathf.Floor(position.z ) + 1) ),*
-
new Vector3((Mathf.Floor(position.x) + 1) , position.y+1, (Mathf.Floor(position.z ) + 1) ),*
-
new Vector3((Mathf.Floor(position.x) + 0) , position.y+1, (Mathf.Floor(position.z ) + 1) ),*
-
new Vector3((Mathf.Floor(position.x) + 0) , position.y+1, (Mathf.Floor(position.z-1 ) + 1) ),*
-
new Vector3((Mathf.Floor(position.x) + 1) , position.y+1, (Mathf.Floor(position.z-1 ) + 1) )};*
int[] triangles = new int[39] {0,2,1, 1,2,3, 2,3,4, 4,5,2, 5,0,2, 5,6,0, 6,7,0, 0,7,1, 3,4,1, 1,7,4, 6,4,7, 4,6,5, 1,4,3};
returnMesh.vertices = vertices;
returnMesh.triangles = triangles;
return returnMesh;
}
}
Class attached to gameobject:
using UnityEngine;
using System.Collections;
public class Chunk : MonoBehaviour
{
-
int counter;*
-
void Start ()*
-
{ *
-
this.gameObject.renderer.material.color = Color.green;*
-
GetComponent<MeshFilter>().mesh = NewMesh.createNewMesh(new Vector3(0,0,0));*
-
counter+=1;*
-
Mesh secondMesh = new Mesh();*
-
for(int x = 0; x< 10; x++)*
-
{ *
-
for(int y = 0; y< 10; y++)*
-
{*
-
for(int z = 0; z< 10; z++)*
-
{*
-
GetComponent<MeshFilter>().mesh = NewMesh.ExtendMesh(GetComponent<MeshFilter>().mesh,NewMesh.createNewMesh(new Vector3(x,y,z)),counter); //Adds second mesh to mainmesh.*
-
counter+=1;*
-
}*
-
}*
-
}*
-
}*
-
void Update ()*
-
{*
-
}*
}
[10302-fdfdfdfdfdfdf.jpg|10302]*
*