だから私はタイル画像を使って横スクロールゲームを作っています。常に、このコードを使用して少なくとも120枚の画像が描画されています。
for (int mapX = 0; mapX < mapWidth; mapX++)
{
for (int mapY = 0; mapY < mapHeight; mapY++)
{
try
{
Block block = mapList[mapY, mapX];
if (block == null)
continue;
if (block.nullspace)
continue;
block.Interact();
int drawX = sceneX + block.blockX;
int drawY = sceneY + block.blockY;
if (drawX + block.blockWidth < 0)
continue;
else if (drawX > this.ClientSize.Width + 50)
break;
if (drawY + block.blockHeight < 0)
continue;
else if (drawY > this.ClientSize.Height)
break;
e.Graphics.DrawImage(block.blockImage, drawX, drawY, block.blockWidth, block.blockHeight);
if (block.overlayImage != null && !block.dontDraw)
e.Graphics.DrawImage(block.overlayImage, sceneX + block.blockX, sceneY + block.blockY, block.blockWidth, block.blockHeight);
}
catch (Exception)
{
}
}
}
ただし、このコードは、画像を移動する必要があるたびに実行されます。たとえば、シーン全体を移動させるために、10間隔のタイマー(移動をスムーズに保つため)を使用して、sceneX(シーンを左に移動しているため)をデクリメントしてから、シーン全体を再描画します。つまり、基本的に、10ティックごとに約120枚の画像が再描画されます。これにより、プログラムはコンピューターのCPU使用率の約40%に達します。
基本的に私の質問は、「たくさんの画像タイルを描画して移動する最も効率的な方法は何ですか」です。
描画されているシーンの画像は次のとおりです。