Unity SpriteAtlas V2
Bietet editor-sicheres prozedurales Wissen zur Skripterstellung von Atlanten in Unity-Projekten. V2 erzwingt strikte Trennung zwischen Editor-Authoring und Runtime-Zugriff.
⚠️ Kritisches V2-Prinzip:
SpriteAtlasist nur Runtime.SpriteAtlasAssetist nur Editor. Mischen Sie niemals Kontexte. Verwenden Sie immer V2.
🚨 KRITISCH: Erforderliche Prüfungen und Benutzereingaben vor der Implementierung
Führen Sie IMMER diese Prüfungen durch und stellen Sie diese Fragen, BEVOR Sie Code generieren:
Lesen Sie die mitgelieferten Ressourcen, bevor Sie Code schreiben (ERFORDERLICH)
Diese Fähigkeit versendet funktionierenden C#-Code unter resources/, und der Atlas-Code, der schiefgeht, ist fast immer Code, der geschrieben wurde, ohne ihn zuerst zu lesen. Öffnen Sie die Dateien für den von Ihnen gewählten Pfad, dann schreiben Sie.
| Diesen Pfad nehmen | Zuerst lesen |
|---|---|
| Jegliche Atlas-Arbeit | resources/authoringvsruntime.cs, references/common-errors.md |
| Prebuild-Generierung (Standard) | resources/spriteatlasprebuildgenerator.cs, resources/enablespritepacking.cs, resources/savespriteatlasasset.cs |
| Option B, Addressables Late-Binding | resources/buildaddressablespostprocess.cs, resources/spriteatlaslatebinding.cs, resources/handlelatebinding.cs |
| Alles, das eine ältere API verwenden könnte | resources/deprecatedmethods.cs, resources/dontscriptspriteatlasineditor.cs, resources/dontpackinruntimebuilds.cs |
resources/ enthält insgesamt 38 Dateien, die benutzerdefinierte Packer, Varianten, Plattformeinstellungen und Runtime-Zugriff abdecken. Durchsuchen Sie das Verzeichnis, wenn Ihre Aufgabe nicht in der obigen Tabelle enthalten ist, anstatt einen Ansatz zu erfinden. Aus dem Gedächtnis auf die API zuzugreifen, anstatt diese zu lesen, ist die häufigste Ursache für einen Atlas, der sauber importiert wird und dann zur Laufzeit nichts tut.
0. Auf vorhandene Skripte prüfen (ERFORDERLICHER ERSTER SCHRITT)
Bevor Sie Code generieren, durchsuchen Sie das Projekt nach vorhandenen SpriteAtlas-Skripten, die von dieser Fähigkeit generiert wurden.
Suchen Sie nach Dateien, die die Kennung enthalten: // [UNITY-SKILL:SPRITEATLAS]
Wenn vorhandene Skripte gefunden werden, fragen Sie den Benutzer IMMER mit folgendem Format:
"Ich habe vorhandene SpriteAtlas-Skripte in Ihrem Projekt gefunden:
Prebuild Generator:
Assets/Editor/SpriteAtlas/SpriteAtlasPrebuildGenerator.csAddressables Builder:
Assets/Editor/SpriteAtlas/BuildAddressablesPostprocess.csRuntime Loader:
Assets/Scripts/SpriteAtlas/SpriteAtlasLateBinding.csWas möchten Sie tun?"
Präsentieren Sie dann die Optionen:
-
Option A: Vorhandene Skripte aktualisieren (Empfohlen, wenn sich die Anforderungen geändert haben)
- Generiert Skripte an vorhandenen Pfaden neu
- Behält Dateispeicherorte bei
- Aktualisiert auf die neueste Version
- ⚠️ Kann benutzerdefinierte Änderungen überschreiben
-
Option B: Neue Skripte mit anderen Namen erstellen
- Generiert neben vorhandenen Skripten
- Ermöglicht mehrere Atlas-Konfigurationen
- Ursprüngliche Skripte bleiben unverändert
- Sie müssen neue Namen/Pfade angeben
-
Option C: Abbrechen (vorhandene unverändert lassen)
- Keine Codegenerierung
- Keine Änderungen am Projekt
- Verwenden Sie dies, wenn Sie das aktuelle Setup behalten möchten
Benutzerauswahl-Handling:
- Wenn A gewählt: An vorhandenen Pfaden neu generieren, Version auf 2.0.1+ erhöhen
- Wenn B gewählt: Nach neuen Skriptnamen fragen (z. B. "SpriteAtlasPrebuild_Custom.cs"), dann generieren
- Wenn C gewählt: Sofort stoppen, Benutzer informieren, dass keine Änderungen vorgenommen wurden
1. Liefermechanismus (ERFORDERLICH)
Fragen: "Wie möchten Sie die Sprite-Atlanten ausliefern?"
Option A: Built-in Data (Sofortiges Laden)
- Atlanten sind im Build enthalten und werden sofort geladen
- Setzen Sie
includeInBuild = true - Geeignet für: Kern-UI, Haupt-Gameplay-Sprites, stets benötigte Assets
- Vorteile: Einfach, keine zusätzlichen Pakete, sofortiger Zugriff
- Nachteile: Erhöht anfängliche Build-Größe, kann ohne neuen Build nicht aktualisiert werden
Option B: Late-Binding via Addressables (Bedarfsgesteuertes Laden)
- Atlanten sind NICHT im Build enthalten, werden bei Bedarf über Addressables geladen
- Setzen Sie
includeInBuild = false - Addressables-Einträge für jeden Atlas erstellen
- Addressable-Setup als Prebuild-Schritt hinzufügen
- 🚨 ERFORDERLICH: Addressables-Inhalt als Build-Schritt erstellen
- 🚨 ERFORDERLICH: Runtime-Loader-Skript für Late-Binding erstellen
- Geeignet für: DLC-Inhalte, optionale Funktionen, große Assets, herunterladbare Inhalte
- Vorteile: Kleinere anfängliche Build-Größe, unabhängig aktualisierbar, bedarfsgesteuertes Laden
- Nachteile: Erfordert Addressables-Paket, asynchrones Laden, Netzwerkabhängigkeit
| Anwendungsfall | Empfohlen |
|---|---|
| Kern-UI-Sprites, die immer sichtbar sind | Option A: Built-in |
| Tutorial- oder Onboarding-Sprites | Option A: Built-in |
| Level-spezifische Sprites (100+ Level) | Option B: Addressables |
| DLC oder saisonale Inhalte | Option B: Addressables |
| Lokalisierte UI-Sprites (mehrere Sprachen) | Option B: Addressables |
| Charakter-Skins oder Kosmetika | Option B: Addressables |
2. SpritePacker-Modus (ERFORDERLICH)
Aktivieren Sie den Sprite Packer-Modus, bevor Sie Atlanten erstellen, lesen Sie dann die Einstellung zurück und bestätigen Sie, dass sie übernommen wurde.
Verwenden Sie den Code in resources/enablespritepacking.cs; er setzt EditorSettings.spritePackerMode und konfiguriert die Packeinstellungen des Importers.
Dies ist der Schritt, der entscheidet, ob der von Ihnen erstellte Atlas echt ist. Disabled ist der Nullwert von SpritePackerMode, daher trägt jedes Projekt, in dem niemand es gesetzt hat, das Packen auf Disabled, und ein Atlas, der erstellt wird, während es Disabled ist, importiert trotzdem, wird trotzdem als Asset angezeigt und sieht trotzdem fertig aus, kann aber nie packen. Unity sagt dies im Inspektor: "Sprite Atlas Packing ist deaktiviert". Nichts anderes im Workflow schlägt fehl, sodass ein so ausgelieferter Atlas als Erfolg gelesen wird. Gehen Sie nicht davon aus, dass ein Projekt bereits konfiguriert ist: Lesen Sie den Wert.
Behandeln Sie also "Ich habe es gesetzt" nicht als erledigt. Nachdem Sie es gesetzt haben, lesen Sie EditorSettings.spritePackerMode zurück, bestätigen Sie, dass es nicht Disabled ist, und melden Sie den tatsächlich gelesenen Wert. Wenn Sie es nicht zurücklesen können, sagen Sie dies, anstatt anzunehmen, dass der Schreibvorgang angekommen ist.
Bearbeiten Sie KEINE Meta-Dateien direkt.
🚨 KRITISCH: Standardansatz ist Prebuild-Generierung
Verwenden Sie IMMER IPreprocessBuildWithReport, um SpriteAtlases während der Build-Pipeline automatisch zu generieren oder zu aktualisieren. Dies ist der STANDARD- und ERFORDERLICHE Ansatz, es sei denn, der Benutzer fordert EXPLIZIT manuelles Authoring an.
❌ KEINE Manuellen Menüeintrag-Skripte erstellen
Erstellen Sie NIEMALS Skripte mit [MenuItem]-Attributen für die Atlas-Generierung, es sei denn, dies wird explizit angefordert. Der Prebuild-Ansatz macht manuelle Klicks überflüssig. Verwenden Sie manuelles Authoring nur für: Handoptimierte Layouts, spezifische Sprite-Anordnungen oder Editor-Vorschau-Anforderungen. Siehe Erweitert: Manuelles Authoring.
🚨 KRITISCH: Einschränkung der Sprite-Quellorte
Fügen Sie Sprites NUR aus dem Assets-Ordner des Projekts hinzu. Fügen Sie NIEMALS Sprites aus Unity-Built-in-Assets, Paketen oder externen Speicherorten hinzu. Unity-Built-in-Assets können nicht in SpriteAtlas gepackt werden, und Paket-Assets können Import-/Abhängigkeitsprobleme verursachen.
Kritische V2-Architektur
| Kontext | Komponente | Zweck | Erlaubte Verwendung |
|---|