Create an array of scripts that don't affect each other?
Maybe im approaching this situation the wrong way but im trying to make a 2d array of scripts named block and have access to each blocks methods. Each block has to be initialized to a block so i have a public block Blocks that i use to initialize the array. However when i do this and try to access a method of one block later in code it affects all blocks. Example: blocks[2, 2].changecol(2);. I assumed each Block in the array would receive its own copy of the script that i can access later. But it seems they are all referencing the same public Block Blocks.
Question: How make it so each block in the array has its own script so they don't affect each other. (code Below)
public Block Blocks;
Block [,] blocks = new Block[5, 4];
for(int i=0; i<= 4; i++)
{
for(int n= 0; n<=3; n++)
{
blocks[i , n ] = Blocks;
}
}
Also am i going about this problem in the wrong way using scripts. Ultimately i want to be able to spawn blocks at run-time and access a specific blocks methods in code during run-time. The blocks are grid bases so i use the array to tell the location and spacing of blocks like a x and y coordinate value.
Answer by jbubj · Apr 07, 2016 at 01:30 PM
Solved: To fix it so that each block wasn't referring to the same block i Instantiated a new block every time.
Instead of blocks[i , n ] = Blocks .
I used: blocks[i - 1, n - 1] = Block.Instantiate(Blocks, blockposition, transform.rotation) as Block;
Your answer
Follow this Question
Related Questions
Pushing enemy makes them stop following the player 0 Answers
No overload for method. 1 Answer
Moving an object on a Grid 1 Answer
Pass a value between script or else by reference? 1 Answer
Object reference error 1 Answer