私はC#でタイルマップを描画しようとしていますが、私の問題は私の意見では奇妙です。タイルマップを描画しようとするとOutOfMemoryExceptionが発生する
私は画面上にタイルを描画するためにx座標とy座標を保持するためにこのint配列を持っています。 (それだけではなく0の付いた矢印はXであり、もう一つはYである)私は、画面へのタイルの一部をレンダリングするために、ループのためにどのように使用するか
ここがあり、それは私が「そうだ、ここです私がコメントアウトされますライン上でOutOfMemoryException」:
public void DrawTest(SpriteBatch spriteBatch)
{
for (int x = 0;; x++)
{
for (int y = 0;; y++)
{
x = level1[x, 0];
y = level1[0, y];
//This line bellow is where it says OutOfMemoryException
spriteBatch.Draw(tileSheet, new Rectangle(x, y, 32, 32), new Rectangle(0, 0, 32, 32), Color.White);
if (x >= 5 | y >= 5)
{
x = 0;
y = 0;
}
}
}
}
私はこのrenderメソッドを呼び出したいとき、私はメインクラスでそれを行うには、私はこのDrawTestを使用する前に、それは完全に働いた方法
levelLoader.DrawTest(this.spriteBatch);
をレンダリング方法をtにryはタイルを描く。しかし、なぜこれが正しく動作しないのか全くわかりません。
UPDATE:
public void DrawTest(SpriteBatch spriteBatch)
{
for (int x = 0; x < 5 ; x++)
{
for (int y = 0; y < 5 ; y++)
{
x = level1[x, 0];
y = level1[0, y];
spriteBatch.Draw(tileSheet, new Rectangle(x, y, 32, 32), new Rectangle(0, 0, 32, 32), Color.White);
}
}
}
アップデート2:私はあなたが無限ループに陥っていると思う
public void DrawTest(SpriteBatch spriteBatch)
{
for (int x = 0; x < 5 ; x++)
{
for (int y = 0; y < 5 ; y++)
{
int tileXCord = level1[x, 0];
int tileYCord = level1[0, y];
spriteBatch.Draw(tileSheet, new Rectangle(tileXCord, tileYCord, 32, 32), new Rectangle(0, 0, 32, 32), Color.White);
}
}
}
おそらく、描画呼び出しを無制限にバッチアップしようとしています。この奇妙なループで何をしようとしていますか? – harold
私は作っているゲームの地図を描画するクラスを作成しようとしています。 – Rakso