当前位置: 首页 > 面试题库 >

在libgdx中使用scene2d.ui:皮肤从哪里来?

邓德惠
2023-03-14
问题内容

我已经阅读了关于libgdx的scene2d功能(包括UI元素)的信息,但是我无法使其正常工作。它们似乎都使用皮肤对象,我该如何创建一个?

我已经完成了一个不错的教程,该教程创建了一个简单的libgdx游戏,可以捕捉桶中的雨滴,并且通过加载带有纹理图集的图像来创建一个简单的棋盘游戏应用。但是,scene2d听起来是一种更好的方式来控制棋盘游戏应用程序中的移动部件以及任何按钮和菜单。


问题答案:

要加载皮肤,您可以从libgdx测试项目中使用的示例皮肤文件开始。

  1. Atlaspack文件
  2. 杰森文件
  3. Atlaspack图片
  4. 字体文件

这个问题还有更多细节,我发现必须将文件移到资产的子目录中,以避免HTML版本中的错误。(如果我将文件保留在资产文件夹中,则会看到错误消息,例如“
GwtApplication:异常:读取文件数据/uiskin.json时出错。”)

我发布了一个显示单个按钮的完整示例,有趣的代码都在游戏类中。该示例非常简单,您只需要两个成员变量即可保存场景和按钮。

private Stage stage;
private TextButton button;

要创建皮肤,只需加载数据文件。

Skin skin = new Skin(Gdx.files.internal("data/uiskin.json"));

将按钮连接到舞台上。

stage = new Stage();
button = new TextButton("Click Me!", skin);
stage.addActor(button);

将侦听器连接到按钮,然后注册舞台以接收事件。

button.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        button.setText("Clicked!");
    }
});
Gdx.input.setInputProcessor(stage);

render()方法基本上是对的调用stage.draw()

Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
stage.draw();

然后,您只需要在调整大小时布置屏幕即可。

button.setPosition(
        (width-button.getWidth())/2, 
        (height-button.getHeight())/2);

如果您的屏幕更复杂,请考虑使用Table。

如果要使用其他字体,则可以使用Hiero生成字体文件和图像文件。完成此操作后,您将必须获取新的字体图像并使用TexturePacker将其与其他外观资源重新打包在一起。



 类似资料:
  • 问题内容: 我一直在关注以下内容:https : //code.google.com/p/table- layout/#Quickstart, 以获得LibGDX中表格的一些简介。我已经尝试了一些按钮。 现在我有这段代码: 但这引发了一个原因: 我只将按钮(从屏幕上的其他位置)添加到皮肤中: 我的问题现在是桌子需要什么样的纹理,最重要的是,如何在桌子上使用它们? 问题答案: 当谈到libGDX中的

  • 问题内容: 在我的uiskin.json中,我有这个 当我在Assets文件夹的文本文件夹中有default.fnt时,这很好。 但是我想使用一个Freetypefont。 如何创建Freetypefont并将其加载到uiskin文件中? 问题答案: 不可能事先做,因为您将在运行时生成它。 我的解决方法是保持默认字体不变,并在运行时通过代码替换它。您可以使用它。

  • 尝试从LibGDX的测试加载默认外观时 https://github.com/libgdx/libgdx/tree/master/tests/gdx-tests-android/assets/data(uiskin.atlas、uiskin.json、uiskin.png和default.fnt) 我得到以下错误。 以下是我如何加载和使用皮肤: 看起来它找不到这个: 但是,这一行存在于uiskin

  • 皮肤 皮肤机制为 moye 控件提供强大的样式自定义能力,可以支持 自定义样式 与 换肤 / 风格主题 。 功能特点: 首先,每个控件都有一个基础样式类型: ui-{type},其中{type}表示控件的主类型; 其次,控件可以设定皮肤参数,并可以指定多个皮肤。每个皮肤设定都会添加两个样式类型: skin-{skin} 与 skin-{skin}-{type}, 其中 {skin} 表示设定的皮肤

  • 我已经使用Skin composer创建了一个libgdx皮肤。问题是所有的图片按钮,字体都很大。我如何处理尺寸?我应该缩小图像的大小还是有其他方法?我试着用按钮。设置大小(x,y),但不起作用:|

  • 我想使用dialog类实现一个简单的对话框。我尝试使用这里提供的标准皮肤文件 https://github.com/libgdx/libgdx/tree/master/tests/gdx-tests-android/assets/data 尤斯金。阿特拉斯 尤斯金。json 尤斯金。巴布亚新几内亚 默认。巴布亚新几内亚 默认。fnt 我下载了RAW,但我无法让它们工作。 json中的第一行: 抛出