Джон Скит прав, вы можете напрямую вызывать IsMouseInsideTile () вместо того, чтобы циклически проходить по вашему массиву несколько раз. (В настоящее время вы проверяете, где находится мышь во всем массиве плиток, для каждой плитки, вместо того, чтобы проверять только текущую плитку, в которой вы находитесь).
public void Draw(SpriteBatch spriteBatch)
{
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
if (IsMouseInsideTile(x, y))
{
spriteBatch.Draw(selection, tileRect = new Rectangle(x * 64, y * 64, 64, 64),
Color.White);
}
spriteBatch.Draw(tiles[index[x,y]].texture, tileRect = new Rectangle(x * 64, y * 64, 64, 64),
Color.White);
}
}
}
Извините, это все моя вина, я отправил этот код раньше без двойной проверки. Эта новая версия должна значительно улучшить вашу производительность.