- Home /
Question by
Nexade · May 29 at 04:48 PM ·
null2d arraynull reference
Checking if an object in a 2D array is null triggers a null reference exception
I'm trying to access a point in a 2D array which has a chance of being null. I'm using if != null to make sure I don't trigger an error but that itself is triggering errors. Here's the code:
public void Explode(int x, int y)
{
Debug.Log("Explode Function");
bombWait = 0;
Block b = rows[x].squares[y]; //Definitely not null so no need to check
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if (rows[x] != null)
if (rows[x].squares[y + 1] != null) // Error usually called from this line but also from all the other if(rows[x + _] != null
b = rows[x].squares[y + 1];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if (rows[x + 1] != null)
if (rows[x + 1].squares[y + 1] != null)
b = rows[x + 1].squares[y + 1];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if(rows[x + 1] != null)
if (rows[x + 1].squares[y] != null)
b = rows[x + 1].squares[y];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if (rows[x + 1] != null)
if (rows[x + 1].squares[y - 1] != null)
b = rows[x + 1].squares[y - 1];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if (rows[x] != null)
if (rows[x].squares[y - 1] != null)
b = rows[x].squares[y - 1];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if (rows[x - 1] != null)
if (rows[x - 1].squares[y - 1] != null)
b = rows[x - 1].squares[y - 1];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if (rows[x - 1] != null)
if (rows[x - 1] != null)
b = rows[x - 1].squares[y];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
if (rows[x - 1] != null)
if (rows[x - 1].squares[y + 1] != null)
b = rows[x - 1].squares[y + 1];
if (b != null)
{
if (b.s != Block.Square.metal && b.s != Block.Square.empty)
{
if (b.s == Block.Square.bomb)
b.bm.Die();
else
b.bm.ForceDie();
b.s = Block.Square.empty;
}
}
}
Also I can't use try/catch because I'm trying to export for Webgl.
Comment
Your answer
Follow this Question
Related Questions
if ( Transform == null) ?? Empty Transform reference 1 Answer
Null Reference exception when calling using "script.gameObject.GetComponent 1 Answer
How to remove null's from 2d array ? It's removing but only 2 out of 4 null's. 0 Answers
Why Sprite is null? 0 Answers
Scriptable objects has empty inspectors and do not exist in build 4 Answers