- Home /
Why does my array only execute the last of the array?
How come my code only creates 1 plane based on the last values of the array, instead of the amount of the length of the array?
using UnityEngine;
using System.Collections;
public class LevelSystem : MonoBehaviour {
public Vector2[] coordX;
public Vector2[] coordY;
private float l = 100f;
// Use this for initialization
void Start () {
for (int i = 0; i < coordX.Length; i++) {
MeshFilter mf = GetComponent<MeshFilter>();
Mesh level = new Mesh();
mf.mesh = level;
//verts
Vector3[] verts = new Vector3[]{
new Vector3 (coordX[i].x, coordX[i].y, 0f),
new Vector3 (coordY[i].x, coordY[i].y, 0f),
new Vector3 (coordX[i].x, coordX[i].y, l),
new Vector3 (coordY[i].x, coordY[i].y, l)
};
//Tris
int[] Tri = new int[6];
Tri[0] = 0;
Tri[1] = 2;
Tri[2] = 1;
Tri[3] = 1;
Tri[4] = 2;
Tri[5] = 3;
//Normals
Vector3[] normals = new Vector3[4];
normals[0] = Vector3.forward;
normals[1] = Vector3.forward;
normals[2] = Vector3.forward;
normals[3] = Vector3.forward;
//UVs
Vector2[] uv = new Vector2[4];
uv[0] = new Vector2(0,0);
uv[0] = new Vector2(1,0);
uv[0] = new Vector2(0,1);
uv[0] = new Vector2(1,1);
//assign
level.vertices = verts;
level.triangles = Tri;
level.normals = normals;
level.uv = uv;
//foreach (var item in normals) {
// Debug.Log(item);
//}
}
}
}
at first blush it looks like you're only setting uv[0]...yet you make an array with 4 Vector2
's
Answer by phil_me_up · Dec 22, 2015 at 09:20 PM
This:
level.vertices = verts;
level.triangles = Tri;
level.normals = normals;
level.uv = uv;
You're setting the level verticies, triangles etc to just the last set of verts you've created, so whilst you are iterating properly, on each iteration you are just overwriting the values on each pass rather than adding them.
ahh that explains it, so how would I make it doesn't overwrite it?
What I tried was this: for (int j = 0; j < coordX.Length; j++) { level.vertices = verts; level.triangles = Tri; level.normals = normals; level.uv = uv;
level.name = "lane" + i; //GameObject Lane = Instantiate ("lane" + i) as GameObject; }
Your answer
Follow this Question
Related Questions
Array index is out of range? 1 Answer
Split() into a fixed length array? 1 Answer
IndexOutOfRange error on iPhone, but not on PC/Player 0 Answers
Null reference when editing an array in a for loop 1 Answer
naming a variable with a number 1 Answer