Libgdx将NinePatch打包成TextureAtlas

时间:2014-02-05 14:43:59

标签: libgdx nine-patch texture-atlas

我已经看到,您可以使用NinePatchTextureAtlas es打包到TexturePacker2。我还看到了thisthis。但我不确定是否理解它是正确的。我想将所有GUI内容打包到一个TextureAtlas中,我的GUI内容不仅由NinePatch组成,而且还由一些TextureRegion组成。是否可以将NinePatchTextureRegion合并为一个TextureAtlas?我可以使用deffault设置,还是必须在paddingX文件中进行paddingY.JSON等自定义设置?在我的游戏中,我可以使用NinePatch加载atlas.createPatch("patchimagename");,还是以TextureRegion s保护所有内容并创建NinePatch更好?

1 个答案:

答案 0 :(得分: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轻松提取TextureRegionAtlas

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. 甚至在使用此皮肤的UI组件(如按钮背景等)中使用您的图像(TextureRegionNinePatch)。

  4. 我希望它可以帮到你!