Java Spritebatch未在LibGDX中绘制任何内容

Java Spritebatch未在LibGDX中绘制任何内容,java,android,libgdx,sprite,Java,Android,Libgdx,Sprite,这是我在LibGDX中遇到的最奇怪的事情之一。在我的游戏中,我使用了所有其他状态的精确规范,但是使用了不同的名称,它们都工作得很好,除了我的ShopState,它根本不会渲染任何东西!这是我的课程代码: public class ShopState extends State{ private Texture bg; private Sprite shopLayout; private OrthographicCamera shopCam; Viewport vi

这是我在LibGDX中遇到的最奇怪的事情之一。在我的游戏中,我使用了所有其他状态的精确规范,但是使用了不同的名称,它们都工作得很好,除了我的ShopState,它根本不会渲染任何东西!这是我的课程代码:

public class ShopState extends State{
    private Texture bg;
    private Sprite shopLayout;
    private OrthographicCamera shopCam;
    Viewport viewport;

    public ShopState(GameStateManager gsm) {
        super(gsm);
        shopLayout = new Sprite(new Texture(Gdx.files.internal("shopLayout.png")));
        bg = new Texture("bg2.png");
        shopCam = new OrthographicCamera();
        viewport = new StretchViewport(720, 1280, shopCam);
        viewport.apply();
        shopCam.position.set(shopCam.viewportWidth / 2, shopCam.viewportHeight / 2, 0);
        shopLayout.setPosition(shopCam.viewportWidth / 2 - shopLayout.getWidth() / 2, shopCam.viewportHeight / 2 - shopLayout.getHeight() / 2);
        shopLayout.setSize(650, 1100);
    }

    @Override
    public void handleInput() {

    }

    @Override
    public void update(float dt) {
        handleInput();

    }
    @Override
    public void resize(int width, int height){
        viewport.update(width, height);
        shopCam.position.set(shopCam.viewportWidth / 2, shopCam.viewportHeight / 2, 0);
    }


    @Override
    public void render(SpriteBatch sb) {
        shopCam.update();
        sb.setProjectionMatrix(shopCam.combined);
        sb.begin();
        sb.draw(bg, 0 , 0, shopCam.viewportWidth, shopCam.viewportHeight);
        shopLayout.draw(sb);
        sb.end();

    }

    @Override
    public void dispose() {
        bg.dispose();
        shopLayout.getTexture().dispose();

    }
}

我做错了什么?一切似乎都很好,但当我点击商店按钮时,它给了我一个黑屏

好的,找到了一个解决方案,但我不知道为什么会这样。我所要做的就是添加一个使用当前视口的舞台

stage = Stage(viewport);

就这样!由于某些原因,它现在工作正常…

好的,找到了一个解决方案,但我不知道为什么会修复它。我所要做的就是添加一个使用当前视口的舞台

stage = Stage(viewport);

就这样!由于某些原因,它现在工作正常…

shopLayout.png的默认大小是多少?这有关系吗?我改变了它的大小。在设置新的大小之前,您正在使用它来设置shopLayout的位置。将setSize放在setPosition之前,仍然不能工作shopLayout.png和bg2.png的任意一侧的大小(宽度或高度)都应该小于2048。shopLayout.png的默认大小是多少?这有关系吗?我更改了它的大小。在设置新大小之前,您正在使用它设置shopLayout的位置。将setSize放在setPosition之前,仍然不工作shopLayout.png和bg2.png的大小在任意一侧(宽度或高度)都应小于2048。