Erstens Texture vs TextureRegion: Wenn Sie so etwas wie Texture t = new Texture (Pfad) ausführen, laden Sie dies in die GPU. Zusätzlich sollten Sie die Leistung von 2 Texturen laden. Sie können auch mit anderen Auflösungen arbeiten (Texture.setEnforcePotImages = false), es wird jedoch empfohlen, pow of 2 zu verwenden.
Jetzt nimmt TextureRegion ein "Stück" aus einer Textur, unabhängig von ihrer Dimension. Der Vorteil einer Textur und mehrerer Texturregionen dieser Textur besteht darin, dass Sie NICHT jede Region in die GPU laden.
Wie Sie vielleicht denken, ist es beim Zeichnen mit SpriteBatch viel effizienter, TextureRegion anstelle mehrerer Texturen zu verwenden. Es tut mir leid, dass mein Englisch nicht gut genug ist. Hier ist eine gute Erklärung: Textures TextureRegion & SpriteBatch
Jetzt möchten Sie TextureRegion und ein einzelnes Bild mit einer Auflösung von 2 mit allen Spritesheets und Bildern verwenden. Müssen Sie TextureRegions mit allen Koordinaten und Dimensionen erstellen? Müssen Sie Farbe öffnen, um Pixel zu zählen? Nein, das tust du nicht. Sie können so etwas wie TexturePacker verwenden . Es wird jede Textur in ein Bild packen UND eine .pack-Datei mit den Dimensionen und Koordinaten aller erstellen.
Das Ergebnis wird ungefähr so aussehen:
Anstatt eine Textur zu erstellen, erstellen Sie einen TextureAtlas wie folgt:
Das Erstellen Ihrer TextureRegions ist jetzt so einfach wie:
(Beachten Sie, dass der Name der Region der Name des Originalbilds ohne Erweiterung ist.)
Sprite enthält die Geometrie-, Farb- und Texturinformationen zum Zeichnen von 2D-Sprites mit Batch. Dies bedeutet, dass Sie sie leicht drehen und bewegen können. Ich habe meine eigene Entity-Klasse erstellt und benötige keine Sprite-Klasse. Sie würden wahrscheinlich das gleiche tun. Ich finde diese Klasse nicht wirklich nützlich.
Die Bildklasse erbt von Actor. Dies bedeutet, dass Sie es einer Bühne hinzufügen können. Es ist Teil des Scene2D-Pakets. Wenn Sie libgdx noch nicht kennen und dieses Paket nicht kennen, sind dies genügend Informationen zu dieser Klasse. Es ist ein wirklich interessantes Thema, aber in dieser Frage nicht zu beantworten.
Ich hoffe es hilft :)
TextureRegion
s auf unterschiedliche (oder überlappende) Teile einer TexturTexture
verweisen können , während sie sich immer auf das gesamte Bild beziehen. Da das Wechseln von Texturen teuer ist, ist dies gut. Ihre Beschreibung lässt es so klingen, als würde esTextureRegion
sich um spärliche Texturen handeln (a la.GL_ARB_sparse_texture
), Aber libGDX und der größte Teil der Hardware, auf der es ausgeführt wird, unterstützen diese Erweiterung nicht.