Ein Sprite-Sheet in Unity importieren
Eine PNG-Datei in ein Unity-Projekt zu ziehen, dauert eine Sekunde. Damit sie als scharfe, richtig skalierte und richtig ausgeschnittene Sprites dargestellt wird, sind ungefähr sechs Einstellungen nötig. Die meisten sind standardmäßig für 2D-Arbeit falsch gesetzt. Hier erfährst du, was jede davon bewirkt, wie du das Sprite-Sheet im Sprite Editor ausschneidest und wann es schneller ist, es schon vor dem Import in Unity zu schneiden.
Beginne mit Texture Type
Wähle das importierte PNG im Project-Fenster aus und sieh im Inspector nach. Das erste Auswahlfeld ist Texture Type, und der Standardwert ist Default – das ist der 3D-Texturpfad. Ändere ihn zu Sprite (2D and UI).
Das ist keine kosmetische Änderung. Sie bestimmt die verwendete Import-Pipeline, macht die folgenden Sprite-Optionen zugänglich und weist Unity an, zu erzeugen einen Sprite Asset statt einer einfachen Texture2D. Ohne diese Einstellung SpriteRenderer hat nichts zu übernehmen, und der Sprite-Editor-Knopf bleibt ausgegraut. Wurde dein Projekt mit der 2D-Vorlage erstellt, sind neue Texturen bereits standardmäßig auf Sprite eingestellt. Prüfe das, bevor du nach der Einstellung suchst.
Denke daran, zu drücken auf Anwenden unten im Inspector. Unity übernimmt die Texturimporteinstellungen erst dann. Wählst du vorher ein anderes Asset, werden Änderungen unbemerkt zurückgesetzt. Das erwischt fast jeden mindestens einmal.
Sprite Mode: Single oder Multiple
Sprite Mode bestimmt, ob die Datei ein Sprite oder mehrere enthält.
- Einzeln – das gesamte Bild ist ein Sprite. Nutze das für bereits in separate Dateien ausgeschnittene Einzelbilder, Hintergründe und Oberflächenbilder.
- Mehrere – das Bild enthält mehrere Sprites, deren Rechtecke du im Sprite Editor definierst. Nutze das für ein echtes Sheet, das du als einzelne Datei behalten möchtest.
- Polygon – erzeugt ein eigenes Mesh statt eines Quads. Für ein Sprite-Sheet ist das selten erwünscht. Es dient hauptsächlich zur Verringerung mehrfacher Überzeichnung bei großen, überwiegend transparenten Sprites.
Multiple ist der Modus, den viele reflexartig wählen. Ein kurzer Moment zum Überlegen lohnt sich aber. Ein Sprite-Sheet bedeutet eine Textur, einen Zeichenaufruf-Batch und eine zu verwaltende Ressource. Separate PNGs bedeuten einfachere Animationseinrichtung, leichtere Einzelbildbearbeitung und keine Abhängigkeit davon, dass Unity Zellgrenzen errät. Beides ist sinnvoll. Entscheidend ist meist, ob dein Sprite-Sheet ein zuverlässiges Raster hat.
Im Sprite Editor zerschneiden
Wenn Sprite Mode auf Multiple steht, klicke auf Sprite Editor. Wenn die Schaltfläche ganz fehlt, ist das Paket 2D Sprite nicht installiert. Füge es unter Window → Package Manager hinzu. Im Editor wird die Zerschneiden Auswahlfeld oben links bietet drei Typen.
Automatisch
Unity durchsucht die Textur nach Inseln nicht transparenter Pixel und zeichnet um jede ein Rechteck. Bei einem sauberen Sheet mit transparenten Zwischenräumen und gut getrennten Sprites funktioniert das gut mit einem Klick. In drei Fällen scheitert es vorhersehbar: Sich berührende oder überlappende Sprites werden zu einem Rechteck zusammengeführt; eine Figur mit abgetrennten Teilen wie einer schwebenden Waffe oder einem separaten Schatten wird auf mehrere Rechtecke verteilt; und jedes Sheet mit nicht transparentem Hintergrund ergibt genau ein Rechteck um alles, weil das gesamte Bild deckend ist.
Der Method Auswahlfeld daneben ist beim erneuten Zerschneiden wichtig. Delete Existing löscht deine manuellen Korrekturen; Smart versucht, von dir angepasste Rechtecke zu behalten; Safe fügt nur neue hinzu. Nutze Smart oder Safe, nachdem du etwas von Hand korrigiert hast.

Raster nach Zellgröße
Du gibst Pixelbreite und -höhe an, und Unity legt ein Gitter über die Textur. Das ist die richtige Wahl, wenn du die Zellgröße kennst, etwa bei einem 512×512-Sheet aus 64×64-Kacheln. Die Felder Offset und Padding berücksichtigen Sheets mit Außenrand oder Zwischenabständen. Stelle sie einmal ein, und jede Zelle sitzt korrekt, weil ein werkzeuggeneriertes Sheet tatsächlich ein Gitter ist.
Raster nach Zellanzahl
Dasselbe Prinzip, aber du gibst stattdessen Spalten und Zeilen an, und Unity übernimmt die Teilung. Praktisch, wenn du weißt, dass das Sheet 4×4 hat, aber noch nicht gerechnet hast. Achte auf Texturen, deren Abmessungen nicht glatt teilbar sind: 1024 geteilt durch 3 ergibt 341.33. Die Rundung zeigt sich als ein Pixel breiter Streifen des benachbarten Sprites entlang einer Kante jeder Zelle.
Pixel pro Einheit und was das tatsächlich bedeutet
Pixels Per Unit (PPU) ist der Umrechnungsfaktor zwischen Texturpixeln und Unity-Welteinheiten. Der Standardwert ist 100. Ein Sprite mit 100×100 Pixeln belegt bei Skalierung 1 also genau ein Quadrat mit einer Welteinheit Seitenlänge.
Unity-Welteinheiten sind abstrakt. Physik, Kameragrößen und Bewegungsgeschwindigkeiten werden aber in ihnen angegeben. Der gewählte Wert bestimmt daher den Maßstab deines gesamten Spiels. Zwei gängige Konventionen:
- PPU = die Kachelgröße deines Sprites. Wenn deine Kacheln 16×16 Pixel haben, setze PPU auf 16, und eine Kachel entspricht einer Welteinheit. Tilemaps liegen dann auf ganzzahligen Koordinaten, und ein Schwerkraftwert von −9.81 hat eine ungefähr physikalische Bedeutung.
- PPU = 100 für alles. Einfacher, wenn deine Grafiken hochauflösend sind und du keine kachelbasierte Bewegung verwendest.
Entscheidend ist die Einheitlichkeit. Sprites mit unterschiedlichen PPU-Werten erscheinen im Verhältnis zueinander unterschiedlich groß. Die häufig gewählte Korrektur – Transform scale einzelner Objekte anzupassen – verdeckt das Problem und erschwert zugleich das Verständnis von Kollidern, Physik und Prefab-Wiederverwendung. Stelle PPU stattdessen beim Import korrekt ein.
Filtermodus und Kompression für Pixel-Art
Zwei Einstellungen entscheiden, ob deine Pixel-Art wie Pixel-Art oder wie ein verschwommener Fleck aussieht.
Filter Mode ist standardmäßig eingestellt auf Bilinear, wobei zwischen Texeln interpoliert wird, wenn ein Sprite nicht im Verhältnis 1:1 dargestellt wird. Bei fotografischen Texturen ist das erwünscht. Bei einer Figur mit 32×32 Pixeln entstehen dadurch weiche, verwaschene Kanten. Stelle es auf Point (no filter) für Pixel-Art, und die Pixelgrenzen bleiben hart.
Compression ist standardmäßig auf Normal Quality eingestellt, was auf den meisten Plattformen ein Blockkomprimierungsformat bedeutet. Blockkomprimierung nähert Pixelgruppen an. Bei einfarbigen Grafiken mit harten Kanten sind die Artefakte deutlich: Farbsäume um Konturen, besonders in der Nähe transparenter Bereiche. Setze Compression auf None für Pixel-Art-Sprites. Ja, die Textur benötigt mehr Speicher. Eine Handvoll kleiner unkomprimierter Sprite-Sheets ist aber bei jedem modernen Speicherbudget kaum relevant, der sichtbare Unterschied dagegen schon.
Deaktiviere außerdem Generate Mip Maps für 2D-Sprites, die immer ungefähr in ihrer nativen Größe dargestellt werden. Mipmaps sind für Texturen gedacht, die in 3D aus unterschiedlichen Entfernungen betrachtet werden. In 2D verbrauchen sie meist nur Speicher und führen manchmal dazu, dass Sprites eine unschärfere Stufe als beabsichtigt abtasten.
| Einstellung | Pixel-Art | Hochauflösend / gemalte 2D-Grafik |
|---|---|---|
| Texture Type | Sprite (2D und Benutzeroberfläche) | Sprite (2D und Benutzeroberfläche) |
| Filtermodus | Punktabtastung (kein Filter) | Bilinear |
| Kompression | Keine | Normale Qualität |
| Mipmaps erstellen | Aus | Bei 2D aus, bei starker Skalierung an |
| Pixel pro Einheit | Kachelgröße (8, 16, 32…) | 100 |
| Maximale Größe | Mindestens die größte Abmessung des Sprite-Sheets | Mindestens die größte Abmessung des Sprite-Sheets |
Vorgeschnittene Dateien im Vergleich zum Zerschneiden in Unity
Unitys Schneidewerkzeug ist gut in dem, wofür es entwickelt wurde: von einem Werkzeug erzeugte Sheets mit echtem Raster und transparenten Zwischenräumen. Grid By Cell Size bei einem Aseprite-Export ist exakt und sofort erledigt. Es gibt keinen Grund, das anderswo zu tun.
Sheets aus Bildgeneratoren sind ein anderes Problem. Ein Modell, das um ein „4×4-Sprite-Sheet“ gebeten wird, erzeugt etwas, das wie ein Raster aussieht, aber keines ist: Die Abstände verschieben sich pro Zelle um einige Pixel, Sprite-Größen variieren je nach Pose, und der Inhalt liegt nicht mittig in den gedachten Zellen. Grid By Cell Size schneidet durch Köpfe. Automatic verbindet die zwei zufällig aneinanderstoßenden Einzelbilder und teilt das mit dem abgetrennten Schild. Anschließend verschiebst du im Sprite Editor sechzehn Rechtecke von Hand – eine mühsame Art, zwanzig Minuten zu verbringen.
Das Ausschneiden des Sprite-Sheets vor dem Import umgeht das. Unser Sprite-Sheet-Schneidewerkzeug findet Sprite-Grenzen anhand des Alphakanals statt angenommener Koordinaten, beschneidet jedes Einzelbild auf seinen eigenen Inhalt und exportiert einzelne PNGs. Diese werden in Unity importiert mit Sprite Mode Single ganz ohne Arbeit im Sprite Editor. Passt die automatische Erkennung nicht, kannst du im Tab Manuell & Vorlagen jede Rasterlinie in den richtigen Zwischenraum ziehen. Bei einem Sheet mit sechzehn Einzelbildern sind das sechs Verschiebungen statt sechzehn Rechtecken.
Es gibt eine echte Abwägung. Einzelne Dateien bedeuten mehr Assets und ohne Sprite Atlas mehr Zeichenaufrufe. Wenn das für dein Projekt wichtig ist, schneide extern, um korrekte Einzelbilder zu erhalten, und füge dann einen Sprite Atlas Asset (Assets → Create → 2D → Sprite Atlas) hinzu und ziehe den Ordner in dessen Liste Objects for Packing. Du erhältst korrekte Grenzen und gebündeltes Rendern. Unity übernimmt dabei das Packen, das es tatsächlich gut beherrscht.
Von Sprites zu einer Animation
- Wähle die Einzelbilder im Project-Fenster in der richtigen Reihenfolge aus – entweder die Teil-Sprites unter einem zerschnittenen Sheet oder deine einzelnen PNGs.
- Ziehe die Auswahl in Scene oder Hierarchy. Unity fragt nach einem Speicherort und erstellt einen Animation Clip sowie einen damit verbundenen Animator Controller.
- Öffne das Animation-Fenster, um die Abtastrate anzupassen. Der Standardwert von 12 Abtastungen pro Sekunde passt zu vielen Gehzyklen; 24 wirkt flüssiger. Einstellige Werte erzeugen einen bewusst ruckeligen Retro-Eindruck.
- Prüfe, ob die Einzelbilder in der richtigen Reihenfolge stehen. Unity sortiert nach Namen, deshalb frame_10 liegt zwischen frame_1 und frame_2 sofern du nicht mit führenden Nullen auffüllst auf frame_01.
- Wiederhole den Vorgang für weitere Clips und verbinde Übergänge im Animator. Alternativ steuere die Einzelbilder direkt per Skript, wenn du den Animator ganz vermeiden möchtest.
Häufig gestellte Fragen
Warum hat mein Sprite an einer Kante eine dünne Linie des benachbarten Einzelbilds?
Auslaufende Texturfarben. Entweder teilt deine Zellgröße die Textur nicht glatt, oder die bilineare Filterung tastet über die Rechteckgrenze hinweg ab. Setze Filter Mode auf Point, deaktiviere die Komprimierung und prüfe die Zellberechnung. Ein oder zwei Pixel transparenter Abstand zwischen Sprites im Quell-Sheet verhindern das dauerhaft.
Sollte ich Sprite Atlas oder ein einziges großes Sheet verwenden?
In den meisten Fällen Sprite Atlas. Damit kannst du Sprites als separate Dateien erstellen, die sich leicht bearbeiten und umordnen lassen. Unity packt sie beim Build für das Batching in eine gemeinsame Textur. Ein von Hand erstelltes Riesensheet liefert zur Laufzeit ähnliche Ergebnisse, ist aber bei jeder Änderung eines Einzelbilds deutlich umständlicher.
Meine Animation läuft, aber die Figur zittert auf und ab. Warum?
Einzelbilder unterschiedlicher Höhe verwenden denselben mittigen Pivot. Setze den Pivot auf Bottom oder ergänze vor dem Import bei allen Einzelbildern Ränder auf identische Abmessungen, damit der Inhalt in jedem Bild an derselben Stelle liegt.
Muss ich für die Universal Render Pipeline etwas ändern?
Die Importeinstellungen sind gleich. Anders ist das Material: URP 2D verwendet Sprite-Lit-Default, wenn der 2D Renderer aktiv ist. Unbeleuchtete Sprites können deshalb schwarz erscheinen, bis die Szene eine Lichtquelle enthält. Wechsle das SpriteRenderer-Material zu Sprite-Unlit-Default oder füge ein Global Light 2D hinzu.
Das Sheet zerschneiden, bevor es in Unity landet
Wenn Unitys automatische Aufteilung mit deinem Sprite-Sheet nicht zurechtkommt, schneide es zuerst im Browser aus und importiere saubere einzelne PNGs. Magic Slice erkennt Sprite-Grenzen anhand des Alphakanals; mit „Manuell & Vorlagen“ ziehst du die Linien selbst. Nichts wird hochgeladen – alles läuft lokal.
Sprite-Sheet-Schneidewerkzeug öffnen