- Home /
Question by
SpectreNectar · Feb 23, 2012 at 11:14 PM ·
c#objectnullnewinstantiating
Instantiating an object returns null
Using the following code I've managed to receive the value of null.
grid[n] = new Cell();
I'm quite inexperienced at both C# and Unity in general, but shouldn't this put a Cell into the grid array?
The line appears in this context:
private void generate(int num) {
// Create cells
cells = num;
grid = new Cell[cells];
Cell prevCell = null;
Cell thisCell;
int n = 0;
while(n < cells) {
grid[n] = new Cell(); //Why is this null?
thisCell = grid[n];
thisCell.init();
...
}
}
And the Cell class looks like this:
public class Cell : Object {
// Has adjacent
private bool[] adjs;
// Offset in grid
private int col, row;
// The actual object used
private GameObject shape;
public void init() {
// Start off with no offset
col = 0;
row = 0;
// And with no shape
shape = null;
// Also no adjacent cells known initially
adjs = new bool[6];
for( int i=0; i<6; i++ ) adjs[i] = false;
}
public void construct(GameObject s) {
shape = s;
float c = (row%2==0)? col*2.0f : col*2.0f+1.0f ;
float r = row*2.0f;
Instantiate(shape, new Vector3(c, r, 0.0f), Quaternion.identity);
}
public bool is_surrounded() {
for( int i=0; i<6; i++ ) if(!adjs[i]) return false;
return true;
}
public bool has_adj(Board.ADJ a) {
return adjs[(int)a%6];
}
static public void connect_adj(Cell c1, Cell c2, Board.ADJ a) {
c1.adjs[(int)a] = true;
c2.adjs[((int)a+3)%6] = true;
}
static public void disconnect_adj(Cell c1, Cell c2, Board.ADJ a) {
c1.adjs[(int)a] = false;
c2.adjs[((int)a+3)%6] = false;
}
public int find_col(Board.ADJ a) {
int c = 0;
switch(a) {
case Board.ADJ.a1:
c = col+1;
break;
case Board.ADJ.a2:
c = (row%2==0)? col+1 : col ;
break;
case Board.ADJ.a3:
c = (row%2==0)? col : col-1 ;
break;
case Board.ADJ.a4:
c = col-1;
break;
case Board.ADJ.a5:
c = (row%2==0)? col : col-1 ;
break;
case Board.ADJ.a6:
c = (row%2==0)? col+1 : col ;
break;
}
return c;
}
public int find_row(Board.ADJ a) {
int r = 0;
switch(a) {
case Board.ADJ.a1:
r = row;
break;
case Board.ADJ.a2:
r = row-1;
break;
case Board.ADJ.a3:
r = row-1;
break;
case Board.ADJ.a4:
r = row;
break;
case Board.ADJ.a5:
r = row+1;
break;
case Board.ADJ.a6:
r = row+1;
break;
}
return r;
}
public int get_col() {
return col;
}
public int get_row() {
return row;
}
public void set_cell(int c, int r) {
col = c;
row = r;
}
}
Why does this happen?
Comment
Your answer
Follow this Question
Related Questions
Verify if a Component is null 3 Answers
Distribute terrain in zones 3 Answers
C# Null Object Reference - Driving me mad! 1 Answer
Object getting destroyed ? 1 Answer
Multiple Cars not working 1 Answer