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