У меня есть следующий код:
public class Character
{
public Vector2 WorldPixelPosition
{
get { return Movement.Position; }
}
public Vector2 WorldPosition
{
get { return new Vector2(Movement.Position.X / Tile.Width, Movement.Position.Y / Tile.Height); }
}
public Vector2 LevelPosition
{
get { return new Vector2(WorldPosition.X % Level.Width, WorldPosition.Y % Level.Height); }
}
}
Теперь где-то еще в моем коде я делаю около 2500 вызовов в цикле к Character.LevelPosition. Это означает, что за цикл обновления создается 5000 «новых» Vector2, и на моем ноутбуке это действительно снижает частоту кадров.
Я временно исправил это, создав
var levelPosition = Character.LevelPosition;
перед тем, как инициировать цикл, но я чувствую, что его уродливый код делает это каждый раз, когда я сталкиваюсь с подобной ситуацией. Может быть, это - путь, но я хочу убедиться.
Есть ли лучший или общепринятый способ сделать это?
Я использую XNA-Framework, который использует Vector2
.