默认皮肤 LibGDX?
Posted
技术标签:
【中文标题】默认皮肤 LibGDX?【英文标题】:Default Skin LibGDX? 【发布时间】:2013-04-17 11:08:32 【问题描述】:我一直在关注这个: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);
我现在的问题是桌子需要什么样的纹理,最重要的是,如何将它们与桌子一起使用?
【问题讨论】:
【参考方案1】:当谈到 libGDX 中的 UI 时,您会发现它与您之前使用的(yaml、json、xml、UI Builders 等)非常不同。
表格布局 - 这就是 Scene2d UI 的结构和格式。您提供的链接是一个很棒的教程,但正如您已经意识到的那样,您需要一个皮肤来做大多数事情。
LibGDX Skin - 由 3 个东西组成,一个纹理包图像、一个纹理包文件和一个用于设置样式的 Json。您也可以像您正在做的那样以编程方式生成它们,但我发现简单地从文件中加载并使用它们要容易得多。如果您想了解更多关于如何制作或编辑皮肤等信息,请点击此链接:Skins。
现在,回到您遇到的异常。这是因为您创建的皮肤没有用于描述各种 UI 元素样式的 json。在上述异常的情况下,文本字段内的标签没有默认样式。
您可以简单地使用测试文件夹中提供的模板:
-
Atlaspack File
Json File
Atlaspack Image
Font Image
Font File
将这些文件放在你的 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 ,
希望这可以帮助您入门。还有许多其他小事,所以不要害怕查看 wiki 上的 Scene2d.UI 文章以了解更多信息。
注意:您可以使用gdx-tools
artifact 来使用开箱即用的the default UI skin(对于非常小的/简单的应用程序,调试,当你真的急于让 UI 可见等)。
【讨论】:
哇,感谢您的精彩回答:) 唯一让我无法理解的是最后一段代码是什么? :o @AreusAstarte 是样式的json描述,见上面文件列表中的第2项 noncom 是正确的,我只是指出了那一行 json,因为它正是给你带来麻烦的那一行 :) 不需要字体图像,因为它包含在 atlaspack 图像中。如果要更换字体,需要repack it with the raw assets。 很久以前(2011 年末?)它曾经是必需的,因为它是单独的。我不知道要求发生了变化,但很高兴知道。【参考方案2】:或者,如果您想创建自己的,Raleus 制作了一个皮肤编辑器, 非常友好的用户界面,使用简单,效果很棒 https://github.com/raeleus/skin-composer 一旦你浏览了一下,你就会更多地了解皮肤以及你如何使用它们
【讨论】:
以上是关于默认皮肤 LibGDX?的主要内容,如果未能解决你的问题,请参考以下文章