我很困惑我将如何创建一个scene2d标签,因为它需要一个皮肤,我需要一个皮肤?我只在这样的按钮上使用它们:
TextureAtlas btnAtlas = new TextureAtlas(Gdx.files.internal("myAtlas"));
Skin skin = new Skin(btnAtlas);
buttonStyle.up = skin.getDrawable("btnUP");
我很困惑,因为当我想到一个标签时,我认为字体和文字不是图册或皮肤。我在网上看到了一些代码,他们使用的是.json文件而不是.atlas文件让我更加困惑,如何创建一个包含我想要使用的字体的.json文件?什么是.json文件?我也在使用Libgdx框架,当我创建一个atlas文件时,我只使用LIbgdx纹理包装器将一组纹理组合在一起。
答案 0 :(得分:1)
所以,让我们从头开始:
Json文件
JSON是一种文本格式 - XML的替代品。它看起来像JavaScript的对象表示法。 JSONes用于传输数据,但也用于序列化对象--LibGDX已经有了很好的JSON支持。
JSON正在使用{}
和:
个符号,所有内容都保留为文本。例如:
{
"name" : "Mike",
"city" : "London"
"address" : {
"road" : "Green",
"number" : "5"
}
}
可以将其解析为某个Person
类对象,也可以使用某些键进行访问(类似伪代码中的number = person[address][number]
)
字体
要定义字体,您需要.fnt文件(例如使用Hiero生成)。 Libgdx正在使用BitmapFonts - 使用代码渲染字体(您可以将其视为关于纹理贴图)。有一些方法可以直接使用像.ttf这样的字体文件,但一般来说,如果你不需要
<强>皮肤强>
Skin是一个定义Scene2D实例的对象。您可以使用Skin描述按钮的外观或 textButton 具有的背景图形。您可以直接创建它(就像您已经做的那样 - 通过创建new Skin()
实例并向其添加drawables,styles ...)或使用包含所有这些信息的JSON文件。
正在将JSON文件解析为Skin,现在您可以使用它。我可以推荐this tutorial来了解Skins是如何工作的,但简而言之,步骤是:
1
。使用Scene2D UI将使用的所有图形创建TextureAtlas(当然使用TexturePacker)
2
。使用定义创建适当的JSON文件(看一下教程)
3
。将 .atlas , .png 和 .skin 文件命名为相同 - 所以你会有类似的东西:skin.atlas,skin.json, skin.png
请注意,Skin JSON不是传统的JSON - 它没有"
个符号,因此您将拥有
down: round-down, up: round,
而不是
"down": "round-down", "up": "round",
同样round-down
或round
是您地图集中的可绘制内容的名称
当您拥有皮肤JSON时,您只需创建它的实例,然后通过提供皮肤实例和样式名称来创建按钮,标签等
Button b = new Button(skin, "registerButton");