Hello,
I am new to using Unity. I have previously made Android games using Eclipse (and coding in Java).
I am trying to make a game which is built upon a grid of squares. At the moment I have a ‘world’ GameObject in my scene which takes up the whole of the camera’s view and has a world.cs script attached. I also have a ‘square’ GameObject which is linked to a square prefab and has a square.cs script attached.
What I want to do is instantiate multiple ‘square’ prefabs and give each one a different position and a different ‘ID’ which is a ‘private int’ variable in my square.cs script.
In world.cs I have the variables:
int NUMBER_OF_ROWS = 13;
int NUMBER_OF_COLUMNS = 9;
int nextID = 0;
Transform instantiateSquare;
I have dragged the square GameObject to the instantiateSquare variable in the world’s inspector to link it up.
So, in the Awake() function of world.cs I want to do:
for (int i=0; i<NUMBER_OF_ROWS; i++) {
for (int j=0; j<NUMBER_OF_COLUMNS; j++) {
Square localSquare = Instantiate(instantiateSquare, transform.position, transform.rotation);
localSquare.ID = nextID;
nextID++;
}
}
It’s all a bit of a mess. It does not like the ‘Square’ as a type before the declaration of localSquare. How can I get Unity to recognize my custom class Square defined in square.cs as a type to instantiate? The error message given is ‘The name ‘Square’ does not exist in the current context’. I had the code working to some degree with the Square changed to Transform (and a few other tweaks I’ve since forgotten) but then I got the error 'UnityEngine.Transform does not contain a definition for ‘ID’.
I do not want to create a Generic type of prefab based on Transform, I want to create a Square with variables that I can set and manipulate in its own script. Any help is greatly appreciated.