我一直在关注这个: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);
我现在的问题是桌子需要什么样的纹理,最重要的是,我如何在桌子上使用它们?
答案 0 :(得分:85)
当谈到libGDX中的UI时,你会发现它与你之前使用的非常不同(yaml,json,xml,UI Builders等)。
表格布局 - 这就是Scene2d UI的结构和格式。你提供的链接是一个很棒的教程,但是你已经意识到,你需要一个皮肤去做大多数事情。
LibGDX皮肤 - 由三件事组成,一个纹理包图像,一个纹理包文件和一个用于设置样式的Json。您也可以像编程一样以编程方式生成它们,但我发现从文件中加载它们并使用起来要容易得多。如果您想详细了解如何制作皮肤或编辑皮肤等,请点击以下链接:Skins。
现在,回到你得到的例外。这是因为您创建的皮肤没有用于描述各种UI元素的样式的json。在上述异常的情况下,文本字段内的标签没有默认样式。
您可以简单地使用tests文件夹中提供的模板:
将这些文件放在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 导航一下后,您将对皮肤以及如何使用它们有更多了解