Libgdx - 如何让对话淡出而不是整个舞台?

Libgdx - How to make the dialog fade but not the whole stage?

当我用

显示对话框时
someDialog.show(someStage);

对话框显示默认淡入动作。 舞台也淡入淡出。所以它让我的背景随着舞台一起淡化。

我怎样才能防止这种情况发生?

编辑: 这是我的示例代码:

屏幕显示方法:

Texture bg = new Texture(Gdx.files.internal(src));
stage = new Stage(game.getViewport(), batch);
stage.addActor(someDialog) //just normal dialog

渲染代码:

@Override
    public void render(float delta) {
        super.render(delta);
        getBatch().begin();
        getBatch().draw(backgroundTexture, 0, 0, width, height);
        getBatch().end();
        getStage().act(delta);
        getStage().draw();
        time += delta;
    }

我在某些事件触发时显示对话框:

   dialog.show(getStage());

我尝试将 null 作为 show 方法的第二个参数

dialog.show(getStage(), null);

并使舞台和对话都不会淡入,但希望只保留对话或至少不保留背景的效果。

Stage 完成后不会清除 SpriteBatch 的颜色,因此当循环返回时,上次使用的颜色仍会应用到精灵批次。在您的情况下,最后使用的颜色恰好是对话框的颜色。

要解决此问题,请在 getBatch().draw(backgroundTexture, 0, 0, width, height); 行之前添加 getBatch().setColor(Color.WHITE);

而且我不认为你的整个舞台都在褪色。现在,您的背景纹理与舞台无关,只是它们共享使用 SpriteBatch。