在我的代码中,我有一个嵌套循环,它不会迭代,除了if语句外,无论条件如何都会发生。如果没有if语句,迭代循环的for循环代码部分将变得无法访问。无论我尝试过什么,我都无法让内循环迭代。
class Map
{
public int Width { get; set; }
public int Height { get; set; }
public Vector2[] positions = new Vector2[500*500];
private GroundVoxel[,] map = new GroundVoxel[500, 500];
private Vector2 voxelPosition = new Vector2(0,0);
private static int sizeX = 499, sizeY = 499, airLevel = 425;
private int positionX = 0, positionY = 0, vectorNumber = 0;
public Map()
{
}
public Vector2[] Initialize()
{
for (int i = 0; i <= sizeY; i++)
{
for (int j = 0; j <= sizeX; j++) <-- This does not iterate.
{
map[positionX, positionY] = new GroundVoxel(voxelPosition);
voxelPosition.X += 80;
positions[vectorNumber] = voxelPosition;
vectorNumber += 1;
if (j == sizeX) <-- This always executes even though j != sizeX.
{
break;
}
}
voxelPosition.Y += 80;
voxelPosition.X = 0;
}
return positions;
}
}
}
答案 0 :(得分:1)
您必须使用完全限定名称来引用静态类成员变量,例如sizeX
和sizeY
。
Here是关于此主题的文章。< / p>
希望这有帮助!
答案 1 :(得分:0)
我认为我们需要更多代码。我已将您的代码复制到基本的winforms测试应用程序中,并且我的两个循环都按预期迭代。
我不熟悉XNA或“VoxelPosition”是什么,但我认为你有一个潜伏的错误:
voxelPosition.X += 80;
positions[vectorNumber] = voxelPosition;
您只是将相同的指针存储在一个非常大的数组中 - 所有条目都将指向同一个对象。
每次循环都需要声明另一个对象来存储单个矢量条目。
希望这有帮助吗?