Sök…


versioner

Version Utgivningsdatum
1.9.3 2016/05/16
1.9.5 2016/12/11

Installation eller installation

LibGDX har en ganska enkel installation med hjälp av ett enkelt Java-program. Du hittar nedladdningen här . När du startar applikationen ser det ut så här: Exempel på LibGDX-projektgenerator
Obs: Den här skärmdumpen har tagits på Linux och visar sökvägen som skiljer sig från en Windows-installation. Formen är dock densamma på alla operativsystem som är kompatibla med det här installationsprogrammet

Inmatningslådor

I inmatningsrutan "Namn" är spelets namn för ditt projekt. Inmatningsrutan "Paket" är paketet till din huvudklass. Inmatningsrutan "Game Class" är huvudklassen som kallas när ditt spel körs. Inmatningsrutan "Destination" är destinationen där ditt projekt kommer att genereras. Inmatningsrutan "Andriod SDK", sökvägen till var din Android-SDK är. Den här inmatningsrutan är helt valfri, så om du inte vill distribuera din applikation till Android behöver du inte oroa dig för det här.


Delprojekt

Delprojekt är bara de plattformar som ska distribueras till. Den delen är ganska självförklarande. Om du inte vill distribuera den till HTML till exempel, helt enkelt avmarkera kryssrutan.


Extensions

Tillägg är de officiella LibGDX-förlängningarna. Här är en tabell som berättar vad var och en är:

Tilläggsnamn Beskrivning
Kula Bullet är ett 3D-kollisionsdetekterings- och styvt kroppsdynamikbibliotek.
freetype Freetype låter dig använda .ttf-teckensnitt snarare än att behöva använda Bitmap-teckensnitt
Verktyg Låter dig implementera utgången från LibGDX-verktyg.
controllers Låter dig implementera styrenheter som XBox 360-styrenheter.
box2d Ett fysikbibliotek för 2d-spel.
Box2dlights Låter enkelt sätt att lägga till mjuka dynamiska ljus till ett fysikspel.
Ashley En liten enhetsram
Ai En ram för konstgjord intelligens.

Du kan lägga till tredjepartsförlängningar, men deras detaljer eller namn visas inte här.


Avancerad

I avsnittet Avancerad kan du ställa in flera inställningar och generera extra projektfiler för Eclipse och IDEA IDE.

Ställer in namn Beskrivning
Maven Mirror URL Ersätter Maven Central med den angivna Maven URL
ANING Genererar Intellij IDEA-projektfiler
Förmörkelse Genererar Eclipse-projektfiler
Offlineläge Tvinga inte nedladdningsberoende

Generation

När alla dina inställningar är korrekta kan du trycka på knappen "Generera". Det kan ta några sekunder, men det kommer att generera de grundläggande filerna och Gradle som behövs för ditt projekt. När du är klar med det är det dags att importera projektet till din IDE.

LibGDX Hello World

Grunderna

De genererade projekten innehåller en grundläggande Hello World-liknande applikation som redan har implementerats.

Huvudprojektet är kärnprojektet, som innehåller all plattformsoberoende kod. Detta är obligatoriskt, men baserat på dina generationsinställningar kan du ha flera fler projekt för varje plattform du valt.

Exemplet

Open com.mygdx.game.MyGdxGame.java i core projektet. Du ser följande kod:

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    
    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(img, 0, 0);
        batch.end();
    }
    
    @Override
    public void dispose () {
        batch.dispose();
        img.dispose();
    }
} 

Även om detta är ditt huvudprojekt kommer du inte att köra det direkt, du måste alltid köra den plattformspecifika Launcher, för skrivbord kallas det com.mygdx.game.desktop.DesktopLauncher.java i desktop .

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new MyGdxGame(), config);
    }
} 

I den här klassen kan du ställa in plattformspecifika inställningar.


Kör ditt spel

Eclipse och Intellij använder två olika metoder för att köra ditt projekt. Hitta IDE som du använder nedan.

Kör med Eclipse

Med eclipse kan du köra din applikation genom att köra den här klassen som ett Java-program (högerklicka på projektet -> Kör som -> Java-applikation). Följande fönster visas:

Kör Hello world på skrivbordet

Kör med Intellij Idea

I Intellij måste du göra en körkonfiguration. För att göra detta måste du klicka på knappen längst upp till höger som ser ut som en nedåtgående morot:

Morot

Klicka sedan på knappen "Redigera konfigurationer ...". Du kommer att presenteras med en skärm med alla dina aktuella körkonfigurationer. Klicka på "+" längst upp till vänster i fönstret och välj alternativet "Application". Därifrån väljer du "DesktopLauncher" -filen för "Huvudklass" -alternativet, ställer "Använd klassväg för modul" till kärnalternativet och ställer "Arbetsregister" till tillgångsmappen i din kärnmapp. Slutprodukten ska se ut så här:

Kör konfigurationsexempel

När du har gjort det kan du välja ett namn för din körkonfiguration och klicka på "Apply" och sedan "OK". När du är klar med det kan du klicka på den gröna ikonen längst upp till höger:

Kör ikon

Vad händer i klassen MyGdxGame?

Först kallas create metoden, som kommer att initialisera det parti som dras till skärmen. Sedan laddar metoden badlogic.jpg i minnet.

Efter detta anropas render upprepade gånger tills applikationen stoppas. Den här metoden återställs till bakgrundsfärgen till röd och ritar bilden på skärmen. Som du ser måste du alltid börja och avsluta batchritningen. Slutligen när applikationen håller på att stoppa dispose kallas, kommer det att frigöra minnesutrymmet som används av strukturen och partiet.

(Det är bra att veta att bortskaffande kan ske även under körning på andra plattformar, t.ex. Android, eftersom Android kan frigöra minnesutrymme när applikationer är i bakgrunden, men detta är ett mer avancerat ämne)



Anmärkning: Om du får ett fel vid körning som nedan, kontrollera denna fråga för svar!

Filen hittades inte: badlogic.jpg (Internt)

LibGDX Allmän översikt

LibGDX är ett gratis, open source-spelutvecklingsbibliotek som utvecklats i Java. Det är målen att låta användare utveckla plattformsspel som körs på stationära, Android-, iOS- och webbläsare. Skriv kod en gång, distribuera den till någon av de stora plattformarna.

Lägga till support för plattformspecifik kod

LibGDX är utformad så att du kan skriva samma kod och distribuera den på flera olika plattformar. Ändå finns det tillfällen när du vill få tillgång till plattformspecifik kod. Om du till exempel har topplistor och prestationer i ditt spel kanske du vill använda plattformspecifika verktyg (som Google Play Games) förutom att lagra dem lokalt. Eller så vill du använda en databas, eller något helt annat.

Du kan inte lägga till den här typen av kod i kärnmodulen. Så det första steget är att skapa ett gränssnitt. Skapa den i kärnmodulen. Den första är ett verktyg för att hantera andra gränssnitt:

public interface PlatformWrapper{
    //here you can also add other things you need that are platform specific.
    //If you want to create your own file saver for an instance, a JSON based database,
    //achievements, leaderboards, in app purchases and anything else you need platform specific code for.
    SQLWrapper getSQLSaver();//This one will be used in this example
    AchievementWrapper getAchievementHandler();//this line is here as an example
}

Sedan måste vi skapa ett andra gränssnitt, SQLWrapper. Den här går också i kärnmodulen.

public interface SQLWrapper{
    void init(String DATABASE);
    void saveSerializable(int id, Object o);
    Object loadSerializable(int id, Object o);
    void saveString(int id, String s);
    //.... and other methods you need here. This is something that varies
    //with usage. You may not need the serializable methods, but really need a custom method for saving 
    //an entire game world. This part is entirely up to you to find what methods you need
   
    //With these three methods, always assume it is the active database in question. Unless 
    //otherwise specified, it most likely is
    String getActiveDatabase();
    void deleteDatabase();
    void deleteTable(String table);//delete the active table
}

Nu måste du gå in på varje projekt och skapa en klass för att implementera PlatformWrapper och ett för att implementera SQLWrapper. I varje projekt lägger du till nödvändig kod, t.ex. instanser, konstruktörer och så vidare.

När du har åsidosatt alla gränssnitt som du gjorde, se till att alla har en instans i klassen som implementerar PlatformWrapper (och att det finns en getter). Slutligen byter du konstruktören i huvudklassen. Huvudklassen är den klass du refererar från startprogrammet. Den utökar antingen ApplicationAdapter, implementerar ApplicationListener eller utökar Game. Redigera konstruktören och lägg till PlatformWrapper som ett argument. Inuti plattformsförpackningen har du några verktyg (om du har lagt till något) utöver alla andra omslag (sql, prestationer eller annat du lagt till).

Om allt är korrekt konfigurerat kan du ringa till PlatformWrapper och få något av plattformsgränssnitten. Ring vilken metod som helst och (förutsatt att den exekverade koden är korrekt) ser du på vilken plattform som helst, den gör vad den ska göra med plattformsspecifik kod

AssetManager

AssetManager är en klass som hjälper dig att hantera dina tillgångar.

Först måste du skapa en instans:

AssetManager am = new AssetManager();

När detta har initialiserats, och innan du gör något, vill du få resurserna:

am.load("badlogic.jpg", Texture.class);//Texture.class is the class this asset is of. If it is a 
//sound asset, it doesn't go under Texture. if it is a 3D model, it doesn't go under Texture.class
//Which class added depends on the asset you load

//... other loading here ...//

//when finished, call finishLoading:
am.finishLoading();

Nu, oavsett var du känner för att få badlogic.jpg :

Texture texture = am.get("badlogic.jpg");
//Ready to render! The rendering itself is in the normal way

Om du använder AssetManager kan du ladda dem en gång i minnet på AssetManager och sedan få dem så många gånger du vill.

Varför använda AssetManager? (från wiki ):

AssetManager (kod) hjälper dig att ladda och hantera dina tillgångar. Det är det rekommenderade sättet att ladda dina tillgångar på grund av följande trevliga beteenden:

  • Laddning av de flesta resurser sker asynkront, så att du kan visa en reaktiv laddningsskärm medan saker laddas
  • Tillgångar räknas som referens. Om två tillgångar A och B båda är beroende av en annan tillgång C kommer C inte att bortskaffas förrän A och B har avyttrats. Detta innebär också att om du laddar en tillgång flera gånger kommer den faktiskt att delas och bara ta upp minnet en gång!
  • En enda plats att lagra alla dina tillgångar.
  • Låter transparent implementera saker som cachar (se FileHandleResolver nedan)

Graf för 2D-scen

När du kommer igång med Java eller Android lär du dig snabbt att (0,0) finns i det övre vänstra hörnet. I LibGDX är emellertid (0,0) som standard i det nedre vänstra hörnet.

Med hjälp av en ortografisk kamera kan du få (0, 0) att vara i det övre vänstra hörnet. Men som standard är (0, 0) i det nedre vänstra hörnet. Detta är något som är viktigt att veta, eftersom det också ändrar vilket hörn av texturer som har X- och Y-koordinaterna.



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