我正在制作瓷砖游戏,但我遇到了一个大问题。 这个想法是,如果选择了一个瓷砖,它会变成红色,而一些瓷砖会变成蓝色。如果你单击其中一个蓝色的单位将被选中的单位传输到那个单位,但每次执行此操作时,我选择的图块都会出现NullException。我可以使用Tile本身,但它不包含总是返回null的值或空洞。如果有人能够确定问题,我会非常感激
代码可能出现问题
Update()的一部分:
while (j < baseLayer.MapDimensions.Y)
{
while (i < baseLayer.MapDimensions.X)
{
if (moveToMap[i, j] && standardCheck.Click(new Rectangle(i * 100, j * 100, 100, 100), mouseState, prevMouseState))
{
tileArray[i, j].changeColor = Color.Gold;
tileArray[i, j].MoveTo(tileArray[(int)selectedTile.X, (int)selectedTile.Y].Position,
tileArray[(int)selectedTile.X, (int)selectedTile.Y].getUnit);// problem occors here
//问题出现在这里
}
else
{
tileArray[i, j].Checkclick(mouseState, prevMouseState, relativeMousePosition);
if (tileArray[i, j].ReturnIfSelected)
{
selectedTile = new Vector2(i, j);
}
else if (selectedTile == new Vector2(i, j))
selectedTile = new Vector2(200, 200);
}
i++;
}
i = 0;
j++;
}
j = 0;
瓷砖等级
public Unit unit = new Unit();
public Unit Building = new Unit();
public Unit getUnit
{
get { return unit; }
}
public Color tileColor = Color.White;
public Vector2 position;
public Vector2 drawPosition;
public int[] map { set; get; } = new int[4];
public bool selected = false;
public void LoadContent(Vector2 _position ,int[,,] _map)
{
}
public void Checkclick(MouseState mS, MouseState prevMS,Vector2 matrixPosition)
{
}
}
public bool checkifselectable()
{
}
public void Update(int[,,] _map)
{
unit.Reset();
}
public void MoveTo(Vector2 oldTile,Unit _unit)
{
int change = 0;
if (oldTile.X - position.X != 0)
change = (int)(oldTile.X - position.X);
if (oldTile.Y - position.Y !=0)
change = (int)(oldTile.Y - position.Y);
unit = _unit;
map[2] = _unit.ID;
if (change>= 0)
unit.RemainingMoveSpeed = change;
if (change < 0)
unit.RemainingMoveSpeed = -change;
}
非常感谢你的时间
年轻程序员
答案 0 :(得分:0)
也许你有NullReferenceException。在这种情况下,当尝试取消引用空对象引用时,将抛出此异常。这可能对您有所帮助https://msdn.microsoft.com/en-us/library/system.nullreferenceexception%28v=vs.110%29.aspx。