2017-04-25 7 views
1

ich Libgdx lerne und ich habe über ein Tutorial kommen, die Userdata-Klassen für alle Akteure im Spiel gemacht, zum Beispiel für einen Schauspieler, Spieler, machte er eine Klasse PlayerUserData die Userdata erweitert, die eine ist abstrakte Klasse, die eine Methode namens getUserData hatte, die eine enum zurückgab, die angibt, um welche Art von Akteur es sich handelte (Boden, Spieler, ...). Im Tutorial erklärte er, dass er es gemacht hat, um Informationen zu speichern und dass es für Kollisionen nützlich wäre. Ich verstehe das nicht ganz, warum speicherst du die Informationen nicht in der Schauspielerklasse des Schauspielers? Und welche Informationen hat es über Kollisionen?Libgdx Benutzerdatenklassen

+0

Diese Frage ist zu vage, um beantwortet zu werden. Wir wissen nicht, welches Tutorial Sie gerade lesen oder was der Autor gedacht hat. Sie sollten den Tutorial-Autor wahrscheinlich bitten zu fragen. Oder senden Sie einen Link, um es auf der Libgdx message board und fragen Sie es dort so kann es eher eine Diskussion. – Tenfour04

+0

Okay, tu das, – DreamsInHD

Antwort

1

Klingt kompliziert ... Warum nicht einfach bei einfachen, bewährten Methoden wie unten bleiben;

interface MyActor { 

    enum Type { 
     // Types of actors 
     a, b, c, d 
    } 
    Type getType(); 
} 

Actor1 implements MyActor 
Actor2 implements MyActor 
Actor3 implements MyActor 
Actor4 implements MyActor 

In jedem Actor, die Schnittstellen von MyActor es eine ENUM vom Typ MyActor.Type zurückgeben muss, auf diese Weise gibt es keine Vererbung und Schauspieler haben keine Hierarchie, wo es eindeutig nicht erforderlich.

Jede ActorMyActor Umsetzung ihrer eigenen Klasse, können zusammen in Libgdx Sammlungen gespeichert werden wie Array<MyActor>() und auch für die jeweilige Art des Darstellers, ohne Hektik überprüft werden.

EDIT

Sie könnten sogar die folgende Methode MyActor für eine einfache Überprüfung eines Typs Schauspieler hinzufügen;

boolean isType(Type type); 
+0

Al richtig, danke! – DreamsInHD