В данной ситуации:
- Карта 32x32-плитка собирается рисоваться в моногейме с C#.
- Каждая текстура имеет 64x64 пикселей.
- Существует только один вид текстуры (например, один .png-файл), повторяющийся снова и снова, чтобы заполнить карту.
- Каждая плитка и объект из класса Tile.cs
Пример 1:
Создание статического/абстрактный класс, содержащий одну текстуру, которая должна быть нарисованы, так что каждая плитка объект может использовать это при рисовании.
Рисование плиточных карт monogame performance
public void Draw(){
//Texture.GrassTexture is from the static class
tile.Draw(Textures.GrassTexture);
}
Пример 2:
Другой подход будет либо установить текстурную-переменную для каждого фрагмента при создании нового объекта из него.
Texture2D tileTexture;
public Tile(Texture texture){
tileTexture = texture;
}
При рисовании плитки можно использовать переменную tileTexture.
Пример 3:
Отправка текстуры в качестве параметра для каждой плитки при рисовании плитки.
public void Draw(Texture2D texture){
tile.draw(texture)
}
С точки зрения Performace, что из примеров будет лучшая практика? Любые другие идеи приветствуются!
Код изготовлен для этого сообщения.
Спасибо! Если я объединю все свои интенсивные текстуры плитки с атласом, я предполагаю, что ContentManager будет загружать текстуру только в любом случае? Если нет, не будет ли это тяжело обрабатывать, так как в моей игре чаще всего более 100 фрагментов на экране. Мой класс плитки очень похож на тот, который описывается здесь. – user2858578
Да, менеджер контента загружает только каждую текстуру один раз, но если у вас есть все ваши плитки в виде отдельных текстур, он будет загружать графический процессор при рендеринге, потому что ему нужно будет переключаться текстуры каждый раз, когда он создает другую плитку. – craftworkgames