默认皮肤LibGDX?

时间:2013-04-24 03:25:08

标签: 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();

但它会抛出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);

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

2 个答案:

答案 0 :(得分:85)

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

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

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

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

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

  1. Atlaspack File
  2. Json File
  3. Atlaspack Image
  4. Font Image
  5. Font File
  6. 将这些文件放在android项目的assets文件夹中。然后,您可以使用一行代码轻松加载此外观:

    Skin uiSkin = new Skin(Gdx.files.internal("uiskin.json"));
    

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

    com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
        default: { font: default-font, fontColor: white },
    }
    

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

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

答案 1 :(得分:0)

或者,如果您想创建自己的应用,Raleus可以创建皮肤编辑器, 非常友好的用户界面,易于使用,效果很棒 https://github.com/raeleus/skin-composer 导航一下后,您将对皮肤以及如何使用它们有更多了解