I have written this script to create a grid of gizmo cubes:
using UnityEngine;
using System.Collections.Generic;
public class Grid : MonoBehaviour {
public int[] rows;
//public int[] columns; //not integrated yet
public float gizmoSize = 0.3f;
public int width = 15;
//public int length = 15; //I still don't know how to integrate this; for now width controls both width and length
public List storedPositions;
float storedPositionX = 0;
float storedPositionZ = 0;
int rowIndex = 0;
//int columnIndex = 0;
public float spacingX = 0.3f;
public float spacingZ = 0.3f;
public Color gizmoColor;
void Start()
{
storedPositions = new List(); // this is where I want to store the gizmo cube positions
}
void OnDrawGizmosSelected()
{
rows = new int[width];
//columns = new int[length];
Gizmos.color = gizmoColor;
foreach(int row in rows)
{
for(int x = 0; x < width; x++)
{
Gizmos.DrawCube(new Vector3(transform.position.x + x * spacingX, transform.position.y, transform.position.z + storedPositionZ), new Vector3(gizmoSize, gizmoSize, gizmoSize));
}
if(rowIndex < rows.Length - 1)
{
storedPositionZ += spacingZ;
rowIndex++;
}
else
{
storedPositionZ = 0;
rowIndex = 0;
}
}
}
}
I tried to store the cube positions in the Vector3 List in the start method, but failed, because I don't know how to add every single position just once in the list, as the OnDrawGizmo Methods are being called every frame. Please help!
↧