我正在尝试在C#中编写Unity中的战术RPG,并且要这样做,我需要使用寻路,Dijkstra,节点边缘等。 我试图将2D区域字符代表我的节点的2D面积边缘的地图,这里的地图:2D区域中的未知字符
的#
在这里纪念地图的边界和闪避的指数超出范围的错误。
下面是该项目的代码:
public Nodes[,] GenerateNodes(TextAsset lvl)
{
Nodes[,] nodeArray;
char[,] matrix = GenerateArray(lvl);
nodeArray = new Nodes[matrix.GetLength(0), matrix.GetLength(1)];
for (int row = 0; row < matrix.GetLength(0); row++)
{
for (int col = 0; col < matrix.GetLength(1); col++)
{
char type = matrix[row, col];
if (type != '#' && type != '\n')
{
Debug.LogError(type);
Nodes n = new Nodes(row, col, type);
nodeArray[row, col] = n;
findNeighbors(row, col, matrix, nodeArray); //assuming nodes and matrix variables are instance variables
}
else
nodeArray[row, col] = null;
}
}
return nodeArray;
}
public void findNeighbors(int row, int col, char[,] matrix, Nodes[,] nodeArray)
{
for (int r = -1; r <= 1; r++)
{
for (int c = -1; c <= 1; c++)
{
Debug.LogError(row);
Debug.LogError(col);
if (matrix[row + r, col + c] != '#')
{
nodeArray[row, col].addEdges(nodeArray[row + r, col + c]);
}
}
}
}
的GenerateArray()
方法工作;我之前使用过。问题来自findNeighbors()
。我有这样的错误:
Array Out of range at the row 0 and the columns 19
问题是,我只是有一些#
在这里,它甚至不应该在这里。我试图打印该字符,它不打印任何东西,所以我试图重写该行,压制\n
等,我什么也没有得到。
示例文件的行尾是否为“\ n”?或者他们是“\ r \ n”? –
我在窗户上,很好的猜测,那是该死的\ r,谢谢! –