This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Eine Sprite-Komponente (sprite component) zeigt ein einfaches Bild oder eine Flipbook-Animation auf dem Bildschirm an.
![]()
Die Sprite-Komponente kann für ihre Grafik entweder einen Atlas oder eine Kachelquelle (tile source) verwenden.
Neben den Eigenschaften Id, Position und Rotation gibt es die folgenden komponentenspezifischen Eigenschaften:
Image. Andernfalls ist jeder Platz nach dem Textur-Sampler im Material benannt.
Jeder Platz legt die Atlas- oder Kachelquellenressource fest, die das Sprite für diesen Textur-Sampler verwendet.Automatic legt der Editor die Größe des Sprites fest. Bei Manual kannst du die Größe selbst festlegen.GUI-Box-Knoten (box nodes) und Sprite-Komponenten (sprite components) stellen manchmal Elemente dar, deren Größe vom jeweiligen Kontext abhängt: Bereiche und Dialogfelder, deren Größe an den enthaltenen Inhalt angepasst werden muss, oder eine Lebensanzeige, deren Größe die verbleibende Gesundheit eines Gegners widerspiegeln muss. Dabei können Darstellungsprobleme entstehen, wenn du den in seiner Größe angepassten Knoten oder das Sprite mit einer Textur versiehst.
Normalerweise skaliert die Engine die Textur so, dass sie in die rechteckigen Grenzen passt. Durch das Festlegen von Randbereichen für die Neun-Segment-Skalierung (9-slice) kannst du jedoch einschränken, welche Teile der Textur skaliert werden sollen:

Die Einstellung Slice9 des Box-Knotens besteht aus 4 Zahlen. Sie geben jeweils die Anzahl der Pixel für den linken, oberen, rechten und unteren Rand an, die nicht auf die übliche Weise skaliert werden sollen:

Die Ränder werden im Uhrzeigersinn festgelegt, beginnend am linken Rand:

Die oben beschriebene Texturskalierung mit Slice9 wird nur angewendet, wenn du die Größe des Box-Knotens oder des Sprites änderst:

![]()
Wenn du den Skalierungsparameter des Box-Knotens, des Sprites oder des Spielobjekts (game object) änderst, werden der Knoten oder das Sprite und die Textur skaliert, ohne die Parameter von Slice9 anzuwenden.
Wenn du die Texturierung mit Neun-Segment-Skalierung für Sprites verwendest, muss Sprite Trim Mode des Bildes auf Off gesetzt sein.
Aufgrund der Funktionsweise von Mipmapping im Renderer können beim Skalieren von Textursegmenten manchmal Artefakte auftreten. Das geschieht, wenn du Segmente gegenüber der ursprünglichen Texturgröße verkleinerst. Der Renderer wählt dann für das Segment eine Mipmap mit geringerer Auflösung aus, was zu sichtbaren Artefakten führt.

Um dieses Problem zu vermeiden, stelle sicher, dass die zu skalierenden Segmente der Textur klein genug sind, sodass sie niemals verkleinert, sondern nur vergrößert werden müssen.
Die Eigenschaft Blend Mode legt fest, wie die Grafik einer Komponente (component) mit der dahinterliegenden Grafik gemischt wird. Dies sind die verfügbaren Mischmodi und ihre Berechnungen:
src.a * src.rgb + (1 - src.a) * dst.rgbsrc.rgb + dst.rgbsrc.rgb * dst.rgbsrc.rgb - dst.rgb * dst.rgbDu kannst Sprites zur Laufzeit mit verschiedenen Funktionen und Eigenschaften ändern (Hinweise zur Verwendung findest du in der API-Dokumentation). Funktionen:
sprite.play_flipbook() - Spielt eine Animation auf einer Sprite-Komponente ab.sprite.set_hflip() und sprite.set_vflip() - Legen die horizontale und vertikale Spiegelung der Animation eines Sprites fest.Ein Sprite hat außerdem verschiedene Eigenschaften, die du mit go.get() und go.set() ändern kannst:
cursornumber).imagehash). Du kannst es mit einer Ressourceneigenschaft für einen Atlas oder eine Kachelquelle und go.set() ändern. Ein Beispiel findest du in der API-Referenz.materialhash). Du kannst es mit einer Ressourceneigenschaft für ein Material und go.set() ändern. Ein Beispiel findest du in der API-Referenz.playback_ratenumber).scalevector3).sizevector3). Sie kann nur geändert werden, wenn Size Mode des Sprites auf Manual gesetzt ist.Das Standardmaterial für sprite hat die folgenden Konstanten, die du mit go.set() oder go.animate() ändern kannst (weitere Details findest du im Handbuch zu Materialien). Beispiele:
go.set("#sprite", "tint", vmath.vector4(1,0,0,1))
go.animate("#sprite", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tintvector4). Der vector4 stellt die Einfärbung dar, wobei x, y, z und w dem Rot-, Grün-, Blau- und Alphaanteil entsprechen.Ein Sprite kann Vertex-Attribute des aktuell zugewiesenen Materials überschreiben. Die Komponente übergibt diese Attribute an den Vertex-Shader (weitere Informationen findest du im Handbuch zu Materialien).
Die im Material angegebenen Attribute erscheinen als reguläre Eigenschaften im Inspektor und können für einzelne Sprite-Komponenten festgelegt werden. Wenn eines der Attribute überschrieben wird, erscheint es als überschriebene Eigenschaft und wird in der Sprite-Datei auf dem Datenträger gespeichert:
![]()
Die Datei game.project enthält einige Projekteinstellungen für Sprites.
Wenn ein Sprite mehrere Texturen verwendet, gibt es einige Dinge zu beachten.
Die Animationsdaten (Bildrate, Einzelbildnamen) werden derzeit aus der ersten Textur übernommen. Wir nennen diese die „steuernde Animation“.
Die Bild-IDs der steuernden Animation werden verwendet, um die Bilder in einer anderen Textur zu finden. Daher musst du sicherstellen, dass die Einzelbild-IDs zwischen den Texturen übereinstimmen.
Wenn dein diffuse.atlas beispielsweise eine Animation run wie diese enthält:
run:
/main/images/hero_run_color_1.png
/main/images/hero_run_color_2.png
...
Dann lauten die Einzelbild-IDs etwa run/hero_run_color_1, was beispielsweise in einem normal.atlas wahrscheinlich nicht zu finden ist:
run:
/main/images/hero_run_normal_1.png
/main/images/hero_run_normal_2.png
...
Deshalb verwenden wir Rename patterns im Atlas, um sie umzubenennen.
Trage in den jeweiligen Atlanten _color= und _normal= ein, und du erhältst in beiden Atlanten Einzelbildnamen wie diese:
run/hero_run_1
run/hero_run_2
...
Die UV-Koordinaten werden aus der ersten Textur übernommen. Da es nur einen Satz von Vertices gibt, können wir ohnehin keine gute Übereinstimmung garantieren, wenn die weiteren Texturen mehr UV-Koordinaten oder eine andere Form haben.
Das musst du beachten: Stelle sicher, dass die Bilder hinreichend ähnliche Formen haben, da es sonst zum Übergreifen benachbarter Texturpixel (texture bleeding) kommen kann.
Die Abmessungen der Bilder in den einzelnen Texturen können unterschiedlich sein.