libgdx TextureAtlas和NinePatch';s

libgdx TextureAtlas和NinePatch';s,libgdx,nine-patch,Libgdx,Nine Patch,我正在用libgdx做一个简单的游戏。我有一个TextureAtlas,它有我正在尝试使用的iNinePatch: 图像另存为menu.9.png 我正在使用以下代码: Image bg = new Image(Room.iAtlas.findRegion("GUI/menu")); bg.setBounds(guix-border,guiy-border,(border+radius)*2,(border+radius)*2); batch.begin(); bg.draw(s,1);

我正在用libgdx做一个简单的游戏。我有一个TextureAtlas,它有我正在尝试使用的iNinePatch:

图像另存为menu.9.png

我正在使用以下代码:

Image bg = new Image(Room.iAtlas.findRegion("GUI/menu"));
bg.setBounds(guix-border,guiy-border,(border+radius)*2,(border+radius)*2);
batch.begin();
    bg.draw(s,1);
batch.end();
输出如下:

我真的不知道我做错了什么,但它应该更像这样(除了上面有形状,但我没有添加这些形状):
(我手工创建的,我从来没有真正让9patch工作过,它也没有飞船,因为我没有在中编辑它们)

看起来你的“九补丁”并没有被视为真正的九路径,而是被视为“退化的”九补丁(我之前遇到了一个非常类似的问题:,尽管我没有使用
TextureAtlas
,这应该是解决方案。)

基本上,当Libgdx从地图册中读取九个补丁时,它应该读取所有描述如何将图像分割成九块的元数据(请参阅)。我发现有几个地方可能会出错:

  • 您的纹理不是有效的九补丁,元数据将被忽略。(请使用安卓
    draw9patch
    工具进行检查。)
  • 您的纹理打包程序没有正确处理
    .9.png
    文件。请检查图集的.txt文件内容,并查看它是否有与“menu.9.png”项关联的“拆分”项
  • 纹理查找只是为九个面片区域返回一个常规的
    TextureRegion
    包装器,而不是将其包装在
    NinePatch
    对象中。尝试使用使其更明确。(我觉得这不是必需的,但可能是…)

  • 谢谢你的帮助,我会研究这些东西。早些时候我尝试了TextureAtlas.createPatch(字符串名称),它应该“获得第一个具有该名称的NinePatch”。@csga5000你应该把你的评论作为有效答案,它对我有效。谢谢!