Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libgdx将一个NinePatch打包到TextureAtlas中_Libgdx_Nine Patch_Texture Atlas - Fatal编程技术网

Libgdx将一个NinePatch打包到TextureAtlas中

Libgdx将一个NinePatch打包到TextureAtlas中,libgdx,nine-patch,texture-atlas,Libgdx,Nine Patch,Texture Atlas,我已经看到,您可以使用TexturePacker2将NinePatches打包到TextureAtlas中。我也看过,也看过。但我不确定是否理解正确。我想把我所有的GUI材料打包成一个TextureAtlas,我的GUI材料不仅由NinePatchs组成,还包括一些TextureRegions。是否可以将NinePatchs和TextureRegions组合在一个TextureAtlas中?我可以使用deffault设置吗?还是必须在.JSON文件中进行一些自定义设置,如paddingX,pad

我已经看到,您可以使用
TexturePacker2
NinePatch
es打包到
TextureAtlas
中。我也看过,也看过。但我不确定是否理解正确。我想把我所有的GUI材料打包成一个
TextureAtlas
,我的GUI材料不仅由
NinePatch
s组成,还包括一些
TextureRegion
s。是否可以将
NinePatch
s和
TextureRegion
s组合在一个
TextureAtlas
中?我可以使用deffault设置吗?还是必须在
.JSON
文件中进行一些自定义设置,如
paddingX
paddingY
?在我的游戏中,我可以使用
atlas.createPatch(“patchimagename”)加载
NinePatch
还是将所有内容都安全地保存为
TextureRegion
并从中创建
NinePatch
更好?

让我们想象一下,您拥有用于
TexturePacker2
的文件结构:

images/
  image1.png
  image2-ninepatch.png   <-- this is NinePatch
  image3.png
在此之后,您可以使用
Skin
包装纹理,并轻松地从
Atlas
中提取
NinePatch
TextureRegion

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);
    }
    
    public NinePatch getNinePatch(String region)
    {
        return skin.getPatch(region);
    }
    
  • 按名称获取
    NinePatch

    public TextureRegion getRegion(String region)
    {
        return skin.getRegion(region);
    }
    
    public NinePatch getNinePatch(String region)
    {
        return skin.getPatch(region);
    }
    
  • 甚至在使用此皮肤的UI组件(如按钮背景等)中使用图像(
    TextureRegion
    NinePatch


  • 我希望它能帮助你

    让我们假设您拥有用于
    TexturePacker2
    的文件结构:

    images/
      image1.png
      image2-ninepatch.png   <-- this is NinePatch
      image3.png
    
    在此之后,您可以使用
    Skin
    包装纹理,并轻松地从
    Atlas
    中提取
    NinePatch
    TextureRegion

    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);
    }
    
    public NinePatch getNinePatch(String region)
    {
        return skin.getPatch(region);
    }
    
  • 按名称获取
    NinePatch

    public TextureRegion getRegion(String region)
    {
        return skin.getRegion(region);
    }
    
    public NinePatch getNinePatch(String region)
    {
        return skin.getPatch(region);
    }
    
  • 甚至在使用此皮肤的UI组件(如按钮背景等)中使用图像(
    TextureRegion
    NinePatch


  • 我希望它能帮助你

    如果我用这个工具创建它,它是否具有1px的边界?我是否需要在ingame或skin.JSON中定义可伸缩区域?@Springrbua,是的,此代码将与该工具配合使用。不,您不应该在ingame和JSON中定义可拉伸区域,因为它已经由1px边框定义:)再次感谢,我将尝试:如果我用这个工具创建它,它是否准备好了1px边框?我是否需要在ingame或skin.JSON中定义可伸缩区域?@Springrbua,是的,此代码将与该工具配合使用。不,您不应该在ingame和JSON中定义可拉伸区域,因为它已经由1px border定义:)再次感谢,我将尝试:P