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
對不起,你完全正確。將編輯它,謝謝 –