2个月前我偶然发现我工作的游戏没有与其他设备进行缩放的问题。 所以我决定实现视口,因为人们说这是最好的方式,也是一个简单的方法。 但是从我开始到现在已经有2个月了,现在还没有一个可行的例子。我已经阅读了我能找到的每一个页面,多次阅读wiki并询问几个人,但从来没有得到答案帮助我实现它。Libgdx Viewport舞台不起作用
所以问题是,我需要做3件事情,首先我有一个舞台,这是我将我所有的演员放在(按钮和东西),然后我需要我的凸轮在这种情况下OrthographicCamera,和那么我需要一个视口来扩展一切。
这是我最新的测试:http://pastebin.com/ZvZmeHLs
我创建
@Override
public void create() {
cam = new OrthographicCamera(800, 600);
viewport = new FillViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), cam);
viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);
stage = new Stage(viewport);
atlas = new TextureAtlas("LoadingScreen.pack");
Logo = new Image(atlas.findRegion("VeslaLogo"));
stage.addActor(Logo);
}
和我的大小调整
@Override
public void resize(int Width, int Height) {
viewport.update(Width, Height, true);
Logo.setSize(700, 500);
Logo.setX(Width/2 - Logo.getWidth()/2);
Logo.setY(Height/2 - Logo.getHeight()/2);
Logo.setOrigin(Logo.getWidth()/2, Logo.getHeight()/2);
}
我首先想到的是它的工作,在Nexus One的它看起来很不错,在屏幕上显示了所有内容,但是当我在s4 mini上测试它时,它确实很大。现在我不知道这是因为我只是不理解视口,或者我想方式太复杂。我唯一知道的是我完全迷失了,不知道我还能尝试什么。所以如果有人能够把我推向正确的方向,或者可以向我解释为什么这种方法不起作用,那将会很棒。
PS:我也有固定的尺寸测试,但这次没有任何区别出于某种原因,固定大小的一个
样品:http://pastebin.com/mpjkP9ru
private int VIRTUAL_WIDTH = 600;
private int VIRTUAL_HEIGHT = 900;
@Override
public void create() {
stage = new Stage(new StretchViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT));
cam = new OrthographicCamera(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);
}
和我的大小调整
@Override
public void resize(int Width, int Height) {
Width = VIRTUAL_WIDTH;
Height = VIRTUAL_HEIGHT;
stage.getViewport().update(Width, Height, true);
}
如果需要更多的例子或任何东西,请让我知道,我在一个州,我会尝试任何事情来让它工作
编辑:我设法让它在@donfuxx的帮助下工作。对于那些对代码感兴趣的人:http://pastebin.com/8v2PB2t9
请张贴你的代码直接在你的问题而不是外部网站上。这也会鼓励你只发布代码的相关部分。 – noone
对不起,你完全正确。将编辑它,谢谢 –