java - LibGDX - Stage.setViewport(new Viewport()) 黑屏

标签 java libgdx render viewport

出于组织的考虑,我在游戏中使用多个场景,而不是让每个场景都有一个接收视口(viewport)的构造函数(我的游戏是可扩展的),我想将每个阶段的视口(viewport)设置为与构造函数分开,然后在设置视口(viewport),添加 Actor 。在主类中,会发生这样的情况:

public void setStage(Stage s)
{
    if(currentStage != null)
        currentStage.dispose();
    currentStage = s;
    currentStage.setViewport(view);
}

为了使这一过程流畅进行,每个阶段都有一个 init 方法,该方法在重写的 setViewport 中调用:

@Override
public void setViewport(Viewport v)
{
    super.setViewport(v);
    init();
}

但是,这给我带来的只是黑屏...我尝试更新相机和视口(viewport),但无济于事(请注意, Actor 正在调用其渲染方法)。

为什么我会出现黑屏以及如何修复它?如果不可能,我将恢复使用构造函数。

最佳答案

如果我理解正确的话,你想这样做:

Stage stage1 = new Stage();
stage1.getViewport().update(width, height);

而不是这个:

Stage stage1 = new Stage (new StretchViewport(width, height)); // It doesn't have to be   StretchViewport

在第一种情况(您正在尝试执行的操作)中,将使用 Gdx.graphics 和正交相机的尺寸自动为您构建 ScalingViewport,其作用类似于 StretchViewport。为什么不直接使用第二种情况,传递你想要的视口(viewport)。您随时可以通过调用 stage1.getViewport().update(width, height);

来更改视口(viewport)

或者在较旧的 Libgdx 版本中调用 stage1.setViewport(width, height, false);

Viewport 最近发生了变化,因此如果您可以扩展 Viewport 类来覆盖更新方法,也许您可​​以实现您想要的:

public class ViewportExtendClass extends StretchViewport{

public ViewportExtendClass(float worldWidth, float worldHeight) {
    super(worldWidth, worldHeight);
}

@Override
public void update (int screenWidth, int screenHeight, boolean centerCamera) {
    super.update(screenWidth, screenHeight, centerCamera);
    // DO YOUR INITIALIZATION HERE
}

}

从你的主类中创建新的阶段:

Stage stage1 = new Stage (new ViewportExtendClass (width, height));

然后你打电话:

stage1.getViewport().update(width, height);

像这样,您可以更改舞台视口(viewport)并重新初始化您的资源。

关于java - LibGDX - Stage.setViewport(new Viewport()) 黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24228748/

相关文章:

Java foreach 和 hasNext

android - Libgdx 根据 DPI 选择正确的纹理?

python - 通过 Blender python 渲染和保存图像

java - Eclipse libGDX 项目无法解决本地 repo 的 gradle 依赖但 CLI 没有问题?

android - InputMultiplexer 仅在舞台上工作

javascript - 为什么此代码不起作用?

reactjs - 使用 hooks 进行两次 React 渲染

java - 微调器值未从一项 Activity 传递到另一项 Activity

java - 接口(interface)之间的转换

java - java如何处理使用原始类型列表的泛型性和多态性