繁体   English   中英

舞台对象不会在每个屏幕上居中和缩放相同

[英]Stage object won't center and scale to be same on every screen

我有两个问题似乎都很容易。

首先,我正在开发LibGDX游戏,但我的Table对象之一不会居中

Table table = new Table();
    table.setFillParent(true);
    table.add(preview).size(preview.getWidth(), preview.getHeight()).center().padBottom(40);
    table.row();
    table.add(last).size(last.getWidth(), last.getHeight()).center().left().padLeft(250);
    table.add(next).size(next.getWidth(), next.getHeight()).center().right().padRight(250);

我尝试了上面的代码,但结果却像(我希望“关卡预览”居中)

在此处输入图片说明


问题2

在我的手机上,这些图像都非常适合。 但是在这部手机上它们更小,我如何将其缩放为每部手机上的相同大小,FitViewPort是否有用?

问题1:

更改

table.add(preview).size(preview.getWidth(), preview.getHeight()).center().padBottom(40);

table.add(preview).size(preview.getWidth(), preview.getHeight()).center().padBottom(40).colspan(2);

问题2:

FitViewport可能会导致黑条,但图像会根据纵横比进行缩放。 如果要根据手机尺寸缩放图像,请尝试使用StretchViewport

为了使预览图像居中,它的单元格需要跨越所有列。 如果您希望图像完全适合,则无需尝试将单元格调整为图像大小。

而且,如果您希望两个按钮都位于中间,则使它们的每个单元格尽可能宽,然后将它们向中间的单元格一侧倾斜。

这样做:

table.setFillParent(true);
table.add(preview).colSpan(2).expandX().center().padBottom(40);
table.row();
table.add(last).expandX().right();
table.add(next).expandX().left();

ScreenViewport非常适合UI阶段,因为它可以产生清晰的文本。 但是不利的是,您需要准备好多个UI资产大小来加载,具体取决于设备分辨率。

另外,您可以将ExtendViewport用于您的UI,因此您只需要一个资产比例。

其余的视口类是垃圾(IMO):

  • FitViewport会创建黑条(您的用户不会喜欢,因为电话屏幕太小了)。 如果将其用于UI层可以,但是在绘制UI之前,您需要一个其他视口来应用其他所有内容。 也许如果您在过场动画中可以忽略黑条,则可以暂时使用。
  • StretchViewport导致丑陋的变形拉伸。
  • FillViewport会导致部分虚拟视口大小被裁剪,因此您必须进行各种数学运算以确保场景在所有设备上均完全可见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM