Sök…


vyportar

För att stödja flera upplösningar och bildförhållanden använder Libgdx de så kallade Viewports .
Det finns några typer av Viewports som använder olika strategier för att hantera flera upplösningar och bildförhållanden.
En Viewport använder en Camera under huven och hanterar dess viewportHeight och viewportWidth . Du kan valfritt ge Viewport en Camera i sin konstruktör, annars använder den en OrthographicCamera standard:

private Viewport viewport;
private Camera camera;

public void create() {
   camera = new PerspectiveCamera();
   viewport = new FitViewport(8f, 4.8f, camera);
}  

Dessutom måste du ange worldWidth och worldHeight till viewportens konstruktör. Detta utrymme representerar det virtuella koordinatsystemet som du kommer att använda för att ange objektens position som ska ritas och storlekar. Viewport-transformationen, som till exempel kan tillämpas på en SpriteBatch, kommer automatiskt att ta hand om att omvandla de logiska koordinaterna till faktiska skärmkoordinater, på ett sätt som överensstämmer med den verkliga typen av visningsport du använder. Om du till exempel använder en ortografisk projektion ( OrthographicCamera , som är standard): om din världsstorlek är 12,8 x 7,8 meter och din skärm är 2560x1560 pixlar, kommer din värld att projiceras dynamiskt med 200 pixlar per meter.

När Viewport storlek ändras (till exempel om skärmorienteringen för smarttelefonen förändras) måste du informera Viewport om den förändringen. den kommer sedan att uppdatera automatiskt Camera viewportHeight och viewportWidth :

public void resize(int width, int height) {
    viewport.update(width, height);
}

Viewport s hanterar också OpenGL Viewport och ändrar det dragbara området efter behov.

Viewport s tar också hand om att konvertera skärmkoordinater till spelkoordinater, vilket krävs särskilt för att välja:

private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
    worldPos.set(x, y);
    viewport.unproject(worldPos);
    processPicking(worldPos);
}

Builtin Viewports

Det finns ett par inbyggda utsiktsplatser, som var och en gör olika saker. Här är en lista över namnen och deras beskrivningar:

Viewport Namn Beskrivning
StretchViewport Kommer att sträcka skärmen. Inga svarta staplar, men bildförhållandet kan vara avstängt.
FitViewport Kommer att maximera storleken baserat på bildförhållandet. Kan ha svarta staplar.
FillViewport Ganska samma som FitVieport, men fyller alltid hela skärmen.
ScreenViewport Fyller alltid hela skärmen, men ändrar inte storleken på några barn.
ExtendedViewport Håller världens aspektförhållande utan svarta staplar genom att utöka världen i en riktning
CustomViewport En anpassad programmerad Viewport. Kan ha svarta staplar och kan hålla bildförhållandet.

Anpassade Viewports

Du kan skapa din egen anpassade visningsport. Det kan ha svarta staplar och det kan hålla eller inte hålla bildformatet beroende på hur du programmerar det. En anpassad visningsport skulle se ut så här:
public class Tutorial extends Viewport . Du skulle behöva åsidosätta update(width, height) , men det är det.

Ett annat försök skulle vara att utöka den generiska ScalingViewport och leverera en annan skalning som inte redan levereras. Anta att du ställer in den på Scaling.none . Det skulle se ut så här: Bildsexempel Om du vill ha någon referens kan du hitta de inbyggda visningsklasserna här .

StretchViewport

StretchViewport är en Viewport typ som stöder en virtuell skärmstorlek.
Detta gör att du kan definiera en fast (upplösningsoberoende) bredd och höjd.
StretchViewport , som namnet antyder, sträcker den virtuella skärmen, om det virtuella bildförhållandet inte stämmer med det verkliga bildförhållandet. OpenGL Viewport kommer inte att ändras och svarta staplar visas inte.

Användande:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new StretchViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}

FitViewport

FitViewports är viewports som alltid bibehåller bildförhållandet. Det gör detta genom att skapa svarta staplar på kanterna där det finns utrymme kvar. Detta är en av de vanligaste visningsportarna.

Användande:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new FitViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow