Libgdx упаковывает NinePatch в TextureAtlas
Я видел, что вы можете упаковать NinePatch
в TextureAtlas
используя TexturePacker2
, Я также видел это и это. Но я не уверен, правильно ли понял. Я хочу упаковать все свои GUI-вещи в один TextureAtlas
и мой GUI-материал не только сделан из NinePatch
с, но и некоторых TextureRegion
s. Можно ли совместить NinePatch
с и TextureRegion
в одном TextureAtlas
? Могу ли я использовать настройки по умолчанию или мне нужно сделать некоторые пользовательские настройки, такие как paddingX
, paddingY
в .JSON
файл? И в моей игре я могу загрузить NinePatch
используя atlas.createPatch("patchimagename");
или было бы лучше сохранить все как TextureRegion
и создать NinePatch
из этого?
1 ответ
Представим, что у вас есть структура файлов, которую вы используете для TexturePacker2
:
images/
image1.png
image2-ninepatch.png <-- this is NinePatch
image3.png
Просто измените свое расширение NinePatch
файлы из .png
(например) для .9.png
(и добавьте границу 1px к этому, если необходимо).
images/
...
image2-ninepatch.9.png
...
После этого вы можете использовать Skin
обернуть ваши текстуры и легко извлечь NinePatch
а также TextureRegion
от Atlas
:
TextureAtlas atlas = ... // load the Atlas
Skin skin = ... // create some root skin or use created one
skin.addRegion(atlas); // register atlas in skin
Кроме того, вы можете добавить много атласов к одному скину!
Теперь вы можете сделать это:
Получить
TextureRegion
по имени:public TextureRegion getRegion(String region) { return skin.getRegion(region); }
Получить
NinePatch
по имени:public NinePatch getNinePatch(String region) { return skin.getPatch(region); }
Даже использовать ваши изображения (
TextureRegion
или жеNinePatch
) в ваших компонентах пользовательского интерфейса (например, фон кнопки и т. д.), которые используют этот скин.
Я надеюсь, что это поможет вам!