2013-07-14 2 views
0

Я делаю тест xna как учебное упражнение, и у меня есть небольшой вопрос об использовании 2d текстур. В основном игра представляет собой сетку из разных «плиток», которые берутся из файла текстовой карты. Я в основном просто разбираю файл при инициализации уровня и создаю матрицу из разных типов плитки. Уровень, по существу, представляет собой ванну из плитки и шипов. Таким образом, по существу, есть много настенных плиток и многослойных плиток, а затем много пустых плиток. Тем не менее, существует четыре типа настенной плитки и текстуры шипов для покрытия разных направлений.XNA лучший способ загрузить 2d текстуры; monogame

Мой вопрос - это лучший способ загрузить текстуры для каждой плитки? Я загружаю отдельные текстуры для каждой плитки? Когда я создаю плитку, передайте ей текстуру2d, которую я могу рисовать и загружать текстуру одновременно. Это похоже на хороший способ, но тогда мне приходится загружать каждую текстуру плитки индивидуально, и это кажется расточительным.

Другой вариант, о котором я могу думать, это использовать статическую текстуру в структуре плитки, а затем просто загрузить эту текстуру в качестве атласа плитки с различными стенами и шипами. Таким образом, я загружаю только одну текстуру, а затем при рисовании я просто перемещаю прямоугольник в область соответствующей плитки внутри спрайта.

Я не уверен, какой из этих способов будет оптимальным с точки зрения производительности или если существует альтернативный подход?

Спасибо advanmce

+1

Определить «лучший»? Вы хотите сохранить память, улучшить частоту кадров, сократить время разработки или что-то еще? Кроме того, я заметил, что вы разместили тот же самый вопрос здесь, должен ли я опубликовать тот же ответ на обоих? http://gamedev.stackexchange.com/questions/59109/best-way-to-load-texture2d-tiles-in-xna – craftworkgames

ответ

4

Чудесная вещь о трубопроводе контента является то, что, когда вы делаете

Content.Load<Texture2D>("sometexture"); 

Это не загружает каждый раз Texture2D. Контент контента достаточно умен, чтобы загрузить его один раз и отправлять обратно тот же Texture2D для этой текстуры каждый раз. На самом деле было бы хуже, если бы вы создали статическую структуру.

+0

ОК, это действительно хорошо знать. Мне не понравилась моя реализация со списком спрайтов, так как это касалось хранения исходного прямоугольника для каждого рисованного фрагмента. «Очень приятно» загружать и передавать текстуру, так что это то, с чем я пошел. благодаря –