2014-02-05 2 views
2

Я видел, что вы можете упаковать NinePatch es в TextureAtlas с помощью TexturePacker2. Я также видел this и this. Но я не уверен, понял ли это правильно. Я хочу упаковать все свои GUI-файлы в один TextureAtlas, и мой GUI-материал состоит не только из NinePatch с, но и из некоторых TextureRegion. Можно ли комбинировать NinePatch s и TextureRegion s в одном TextureAtlas? Могу ли я использовать настройки деффе или мне нужно сделать некоторые пользовательские настройки, такие как paddingX, paddingY в файле .JSON? И в моей игре я могу загрузить NinePatch с помощью atlas.createPatch("patchimagename"); или было бы лучше, чтобы все было безопасно, как TextureRegion s и создать из него NinePatch?Libgdx упаковка NinePatch в TextureAtlas

ответ

4

Предположим, у вас есть, что файлы структура используется для 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 

Кроме того, вы можете добавить много атласов к одной коже!

Теперь вы можете сделать это:

  1. Получить TextureRegion по имени:

    public TextureRegion getRegion(String region) 
    { 
        return skin.getRegion(region); 
    } 
    
  2. Получить NinePatch по имени:

    public NinePatch getNinePatch(String region) 
    { 
        return skin.getPatch(region); 
    } 
    
  3. Даже использовать изображения (TextureRegion или NinePatch) в компонентах пользовательского интерфейса (например, фон кнопки и т. Д.), Которые используют этот скин.

Надеюсь, это вам поможет!

+0

Если я создаю его с помощью этого инструмента http://developer.android.com/tools/help/draw9patch.html, у него уже есть граница 1 px? И мне нужно определить растяжимые области игры или в моей skin.JSON? – Springrbua

+1

@Springrbua, да, этот код будет работать с этим инструментом. И нет, вы не должны определять растяжимые области, не играющие и в JSON, потому что они определены границей 1px уже :) – desertkun

+0

Еще раз спасибо, я попробую: P – Springrbua

Смежные вопросы