默认皮肤LibGDX?

我一直在遵循这个: https : //code.google.com/p/table-layout/#Quickstart来获取LibGDX表格的一些介绍。 我已经尝试了一下button。

现在我有这个代码:

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

我只是把我的button(从屏幕上的其他地方)添加到皮肤:

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

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

当涉及到libGDX中的UI时,你会发现它与以前使用的不同(yaml,json,xml,UI Builders等)。

表格布局 – 这是Scene2d UI的结构和格式。 你提供的链接是一个很好的教程,但是你已经意识到,你需要一个皮肤来做大部分事情。

LibGDX皮肤 – 包含3件东西,一个纹理包图像,一个纹理包文件和一个Json来设置样式。 您也可以像编写程序一样生成它们,但是我发现从文件中加载它们并使用它们更容易。 如果你想了解更多关于如何制作皮肤,或者编辑它们,请点击此链接: 皮肤 。

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

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

  1. Atlaspack文件
  2. Json文件
  3. 阿特拉斯图像
  4. 字体图像
  5. 字体文件

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

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

这将有缺less的信息,使您的TextField对象,以及一堆其他默认样式:

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

希望这有助于你开始。 还有其他一些小东西,所以不要害怕查看维基上的Scene2d.UI文章以获取更多信息。

注意:您可以使用gdx-tools artifact来使用默认的UI外观 (对于非常小的/简单的应用程序非常有用,用于debugging,当您急于拥有UI可见等)。