gpt4 book ai didi

java - LibGDX FitViewport 在构造时不适合自身,但在调整大小时适合

转载 作者:行者123 更新时间:2023-11-30 08:06:57 24 4
gpt4 key购买 nike

我正在绞尽脑汁试图弄清楚这里发生了什么...我正在使用 FitViewport,每当我调整屏幕大小时它都工作得很好,但是当它在构造函数期间首次创建时它不适合自己像它应该的那样进入屏幕(就像我调整大小时一样)。

这是我的构造函数和 resize() 方法的代码:

public class UpgradesScreen implements Screen {

private ScreenHandler sh;

private OrthographicCamera cam;
private Viewport viewport;

public UpgradesScreen(ScreenHandler sh) {

Gdx.app.log("UpgradesScreen", "Attached");

this.sh = sh;

cam = new OrthographicCamera();
cam.setToOrtho(true, sh.V_WIDTH, sh.V_HEIGHT);

viewport = new FitViewport(sh.V_WIDTH, sh.V_HEIGHT, cam);
viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

}

@Override
public void resize(int width, int height) {
Gdx.app.log("UpgradesScreen", "resizing");
viewport.update((int) width, (int) height);
}

我已经检查过,以确保 Gdx.graphics.getWidth() 给出的数字与调整屏幕大小时 resize() 方法收到的“宽度”参数相同(与“高度”值相同)。

据我所知,视口(viewport)在构造函数期间的行为应该与调整大小时的行为完全相同。那么为什么它如此顽固并且不更新以适应呢?

这是调整大小后的样子:

FitViewport after resize

...这是首次创建屏幕时、手动调整窗口大小之前的样子:

enter image description here

最佳答案

您正在创建一个新的Viewport对象,该对象在开始时根本没有被使用。

通话

viewport.apply();

在绘制调用之前。

<小时/>

此外,默认情况下会在启动时调用resize方法。使用它来初始化游戏对象而不是构造函数。

<小时/>

编辑:
看看LibGDX Lifecycle .

resize 始终在 render 之前调用。开始时和之后不应有不同的行为。那是你的根本问题。首先尝试修复它。

关于java - LibGDX FitViewport 在构造时不适合自身,但在调整大小时适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com