Instantiate Primitive Code Stopping Unexpectedly

Hey guys,

I am having a little trouble with this code here. It is suppost to ‘generate’ cubes until it makes a larger square, but for some reason, it stopps with 4 cubes up, and 5 to the right… for the life of me, I can’t figure out why! I really appreciate any help on this one, guys!

Here is the code I am using:

using UnityEngine;
using System.Collections;
//Written By Gibson Bethke ][ GBStudios
public class LoadQuadrateCode : MonoBehaviour {
public GameObject block;
public int iUp = 0;
public int iToTheRight = 0;
public int iBack = 0;

void Start () {
	InvokeRepeating("Load", 1, 0.2F);
}

void Load () {
	if(iBack == 5 && iUp == 5 && iToTheRight == 5) {
        CancelInvoke();
	}
	if(iUp == 5 && iToTheRight < 4){
			iUp = 0;
			iToTheRight ++;
	}
	if(iUp == 5 && iToTheRight == 5 && iBack < 4) {
		iBack ++;
		iUp = 0;
		iToTheRight = 0;
	}
	if(iUp < 5) {
		Instantiate(block, new Vector3(iToTheRight, iUp * 1.0F, iBack), Quaternion.identity);
		iUp ++;
	    }
    }
}

Again, any help is appreciated

-Gibson

I see this is kind of an old question. I hope you found a solution, but for those who’ve never gotten this to work I would recommend changing the GameObject variable type at the top of your code to whatever the name of the class is that is controlling it. In my case, I was making waypoints, so:

Waypoint waypoint;
...
w = Instantiate(waypoint, hit.point, Quaternion.identity) as Waypoint;

Now I can do whatever I want with my waypoint, like passing it off to a list of waypoints, or assigning other variables to it before I initialize it.

I am not quite sure what fixed it, but I got it working…

using UnityEngine;
using System.Collections;
//Written By Gibson Bethke ][ GBStudios
public class LoadQuadrateCode : MonoBehaviour {
public GameObject block;
public float loadingSpeed = 0.05F;
public bool doneLoading = false;
public int iUp = 0;
public int iToTheRight = 0;
public int iBack = 0;

void Start () {
	InvokeRepeating("Load", 1, loadingSpeed);
}

void Load () {
	if(iUp == 5 && iToTheRight == 5 && iBack ==5) {
		doneLoading = true;
		CancelInvoke();
	}
	if(iUp == 5 && iToTheRight < 5){
			iUp = 0;
			iToTheRight ++;
	}
	if(iUp == 5 && iToTheRight == 5 && iBack < 5) {
		iBack ++;
		iUp = 0;
		iToTheRight = 0;
	}
	if(iUp < 5) {
		Instantiate(block, new Vector3(iToTheRight, iUp * 1.0F, iBack), Quaternion.identity);
		iUp ++;
	    }
    }
}