默认皮肤LibGDX?

Are*_*rte 43 java layout libgdx

我一直在关注这个:https://code.google.com/p/table-layout/#Quickstart,以便对LibGDX中的表进行一些介绍.我已经用按钮试验了一下.

现在我有这个代码:

Label introLabel = new Label("Skip Intro", skin);
TextField introText = new TextField("", skin);

table.add(introLabel);
table.add(introText).width(100);
table.row();
Run Code Online (Sandbox Code Playgroud)

但它抛出一个NullPointerException因为:No com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle registered with name: default

我只将我的按钮(从屏幕上的其他位置)添加到皮肤中:

atlas = new TextureAtlas("assets/gui/buttons/alpha_generic_buttons.pack");

skin = new Skin();
skin.addRegions(atlas);
Run Code Online (Sandbox Code Playgroud)

我现在的问题是桌子需要什么样的纹理,最重要的是,如何将它们与桌子一起使用?

Jyr*_*117 86

当谈到libGDX中的UI时,你会发现它与你之前使用的非常不同(yaml,json,xml,UI Builders等).

表格布局 - 这是Scene2d UI的结构和格式.你提供的链接是一个很棒的教程,但是你已经意识到,你需要一个皮肤去做大多数事情.

LibGDX Skin - 由3个东西组成,一个纹理包图像,一个纹理包文件和一个用于设置样式的Json.您也可以像编程一样以编程方式生成它们,但我发现从文件中加载它们并使用起来要容易得多.如果您想了解有关如何制作皮肤或编辑皮肤等的更多信息,请点击以下链接:皮肤.

现在,回到你得到的例外.这是因为您创建的皮肤没有用于描述各种UI元素的样式的json.在上述异常的情况下,文本字段内的标签没有默认样式.

您可以简单地使用tests文件夹中提供的模板:

  1. Atlaspack文件
  2. Json文件
  3. Atlaspack图片
  4. 字体图片
  5. 字体文件

将这些文件放在android项目的assets文件夹中.然后你可以用一行代码轻松加载这个皮肤:

Skin uiSkin = new Skin(Gdx.files.internal("uiskin.json"));
Run Code Online (Sandbox Code Playgroud)

这将有缺少信息来制作您的TextField对象,以及一堆其他默认样式:

com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
    default: { font: default-font, fontColor: white },
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于您入门.还有许多其他小事情,所以不要害怕查看维基上的Scene2d.UI文章以获取更多信息.

注意:您可以使用gdx-tools工件来使用默认的UI皮肤开箱即用(对于非常小/简单的应用程序非常有用,用于调试,当您真正急于让UI可见时等).

  • @AreusAstarte它是样式的json描述,请参阅上面文件列表中的第2项 (4认同)
  • noncom 是正确的,我只是指出那行 json 因为它正是给您带来麻烦的那一行 :) (2认同)
  • 不需要字体图像,因为它包含在 atlaspack 图像中。如果你想替换字体,你需要[用原始资产重新打包](http://stackoverflow.com/a/18526117/4794)。 (2认同)