現在、C#でUnityに戦術的なRPGをコーディングしようとしています。そのために、パスファインディング、ダイクストラ、ノードのエッジなどを使用する必要があります。 2D領域エッジとノードの2次元領域での私のマップを表す文字の、ここでマップ: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だった、ありがとう! –