我试图为我的游戏制作控件,总共只有四个按钮,2个右下角,1个左下角,1个右上角,但皮肤非常拉伸并且表现得很奇怪。我尝试过libgdx skin repository不同的皮肤,它们都表现不同,有些是向右伸展的,有些是大的。这是我的代码:
table = new Table();
boostButtonSkin = new Skin(Gdx.files.internal("star-soldier/skin/star-soldier-ui.json"));
boostButton = new ImageButton(boostButtonSkin);
table.setWidth(stage.getCamera().viewportWidth);
table.setHeight(stage.getCamera().viewportHeight);
table.setDebug(true);
table.bottom().left();
table.add(boostButton).width(2).height(2);
stage.addActor(table);
视口宽度和高度分别为40,24。
答案 0 :(得分:0)
这听起来像你忘了调整大小。您的调整大小方法应如下所示。
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height);
}
答案 1 :(得分:0)
LibGDX中的UI小部件实际上是为ScreenViewport设计的,因为UI类型的东西通常是丑陋的,如果没有绘制像素完美。但是你可以通过在纹理上设置三线性过滤,关闭支持它的小部件的舍入,关闭"使用整数位置"来使用其他类型的视口。任何字体。
但即便如此,您还需要使用相当大的虚拟视口尺寸(每个维度中有几百个单位)。您的单位太小,无法正确绘制NinePatch。
除此之外,看起来您正在根据相机设置表格大小,但不保证在您设置小部件时相机的大小正确。不要设置它的大小,而是调用table.setFillParent(true)
,这样它就会自动适应视口的大小。