Во-первых, Texture против TextureRegion: когда вы делаете что-то вроде Texture t = new Texture (path), вы загружаете это в GPU. Кроме того, вы должны загрузить мощность 2 текстуры. Вы можете работать с другими разрешениями (Texture.setEnforcePotImages = false), но рекомендуется использовать pow из 2.
Теперь TextureRegion берет «кусок» из текстуры, независимо от ее размера. Преимущество наличия одной текстуры и нескольких текстурных областей этой текстуры состоит в том, что вы НЕ загружаете каждый регион в графический процессор.
Как вы можете подумать, когда вы хотите рисовать с помощью SpriteBatch, гораздо эффективнее использовать TextureRegion вместо нескольких текстур, извините, мой английский недостаточно хорош. Вот хорошее объяснение: текстуры TextureRegion & SpriteBatch
Теперь вы хотите использовать TextureRegion и одно изображение с разрешением 2 со всеми таблицами спрайтов и изображениями. Вы должны создать TextureRegions со всеми координатами и размерами? Вам нужно открыть краску для подсчета пикселей? Неееет, ты не. Вы можете использовать что-то вроде TexturePacker . Он упакует каждую текстуру в одно изображение и создаст .pack-файл с размерами и координатами всех из них.
Результат будет примерно таким:
Вместо создания текстуры создайте TextureAtlas, например так:
Теперь создание ваших TextureRegions будет так же просто, как:
(Обратите внимание, что название региона - это имя исходного изображения без расширения).
Sprite содержит информацию о геометрии, цвете и текстуре для рисования двумерных спрайтов с использованием пакета. Это означает, что вы можете легко вращать их и двигаться. Я создал свой собственный класс Entity, и мне не нужен класс Sprite. Вы, вероятно, сделали бы то же самое. Я не считаю этот класс действительно полезным.
Класс изображения наследуется от актера. Это означает, что вы можете добавить его на сцену. Это часть пакета Scene2D. Если вы новичок в libgdx и не знаете об этом пакете, вам достаточно информации об этом классе. Это действительно интересная тема, но не ответить на этот вопрос.
Надеюсь, поможет :)
TextureRegion
s могут ссылаться на отдельные (или перекрывающиеся) части текстуры, в то время какTexture
всегда относится ко всему изображению. Поскольку переключение текстур стоит дорого, это хорошо. Ваше описание звучит так, как будто оноTextureRegion
имеет дело с разреженными текстурами (а-ляGL_ARB_sparse_texture
), но libGDX и большая часть оборудования, на котором он работает, не поддерживает это расширение.