Communitygithub.com

unity-technologies/2d-pixel-perfect

Richtet pixelgenaue 2D-Rendering in Unity-Projekten ein, diagnostiziert und behebt Probleme. Verwenden Sie dies, wenn Sie an Retro-Stil- oder Pixel-Art-2D-Spielen arbeiten.

Was ist 2d-pixel-perfect?

Diese Fähigkeit unterstützt Entwickler bei der Einrichtung, Diagnose und Behebung von pixelgenauem 2D-Rendering in Unity, unabhängig davon, ob das Projekt die Built-in Render Pipeline oder die Universal Render Pipeline (URP) verwendet. Ein zentrales Merkmal ist die automatische Erkennung der Render-Pipeline, da URP und Built-in unterschiedliche, inkompatible PixelPerfectCamera-Komponenten verwenden. Die Fähigkeit bietet einen umfassenden diagnostischen Check, der die Sprite-Importeinstellungen (Filter Mode = Point, Mip Maps aus, Komprimierung aus), die Editor-Snap-Einstellungen, die Kamerakonfiguration (Orthographic, Pixel Perfect Camera, Anti-Aliasing aus) und die Projekteinstellungen überprüft. Sie enthält detaillierte API-Referenzen für die Enum-Werte von `GridSnapping` und `CropFrame` sowie Referenzauflösungstabellen. Häufige Probleme wie verschwommene Sprites, Tilemap-Lücken, Cinemachine-Konflikte und Nachbearbeitungsprobleme mit `upscaleRT` werden behandelt. Es wird ausdrücklich davor gewarnt, die Fähigkeit für HD-2D-, UI- oder HDRP-Projekte zu verwenden. Der Workflow ist diagnostikorientiert: Zuerst wird die Pipeline erkannt, dann werden die Probleme gemeldet und behoben.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/unity-technologies/skills/tree/main/skills/2d-pixel-perfect

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Richten Sie pixelgenaues 2D-Rendering in Unity-Projekten ein, diagnostizieren und beheben Sie es.


⚠️ Es gibt zwei komplett separate Implementierungen

Pixelgenaues Rendering in Unity ist nicht ein System — es sind zwei separate, inkompatible Implementierungen, eine pro Render-Pipeline. Erkennen Sie immer die Pipeline, bevor Sie Code schreiben oder diagnostizieren.

URPBuilt-in
KomponenteUnityEngine.Rendering.Universal.PixelPerfectCameraUnityEngine.U2D.PixelPerfectCamera
PaketIn URP integriert — keine zusätzliche Installationcom.unity.2d.pixel-perfect v6.0.0+
API-StilEnums (gridSnapping, cropFrame)Booleans (pixelSnapping, upscaleRT, cropFrameX/Y)

Installieren Sie com.unity.2d.pixel-perfect nicht in einem URP-Projekt.

→ Rufen Sie immer zuerst DetectPipeline() auf (references/pipeline-detection.cs), dann verzweigen Sie Ihre Einrichtung, Diagnose und Fehlerbehebung basierend auf dem Ergebnis.


Wann diese Fähigkeit NICHT verwendet werden sollte

  • HD 2D- oder hochauflösende 2D-Spiele — Pixel-Snapping und Point-Filtering lassen glatte Grafiken falsch aussehen
  • Nur-UI-Szenen — verwenden Sie stattdessen den Canvas Scaler
  • HDRP-Projekte — Pixel Perfect Camera wird nicht unterstützt

Kritische Erinnerungen

⚠️ Erkennen Sie zuerst die Render-Pipeline — URP und Built-in verwenden unterschiedliche Pixel Perfect Camera-Komponenten, die nicht austauschbar sind. ⚠️ Filter Mode = Point ist die #1-Lösung — Bilineare Filterung ist Unitys Standard und fast immer die Ursache für verschwommene Sprites. ⚠️ Anti-Aliasing muss deaktiviert werden — in den Qualitätseinstellungen und an der Kamera. AA verwischt aktiv Pixelkanten.

Schlüsselprinzipien

1. Pipeline-Erkennung & Kamera-Komponentenauswahl

Siehe die Zwei-Pfade-Vergleichstabelle am Anfang dieser Datei. Hinweis zum Assembly-Namen: Das eigenständige Built-in-Paket installiert in einem Runtime/-Ordner, aber das asmdef "name"-Feld ist Unity.2D.PixelPerfect — ohne Runtime-Suffix. HDRP wird nicht unterstützt — siehe den HDRP-Fallback-Abschnitt unter Häufige Probleme.

→ Code: references/pipeline-detection.cs — DetectPipeline(), GetPixelPerfectCameraType() und Migrations-Mismatch-Prüfung.

2. Diagnose-zuerst-Ansatz

Diagnostizieren Sie immer, bevor Sie Änderungen vornehmen. Melden Sie die Ergebnisse und beheben Sie dann nur, was defekt ist.

3. Arbeiten Sie im richtigen Gültigkeitsbereich

Standardmäßig im Szenenbereich. Durchsuchen Sie das gesamte Projekt nur, wenn der Benutzer dies ausdrücklich anfordert.


Diagnose-Checkliste

Sprite-Importeinstellungen:

  • Filter Mode = Point (no filter) auf allen relevanten Sprites
  • Mip Maps = deaktiviert
  • Komprimierung = None / Unkomprimiert
  • PPU konsistent über alle Sprites in der Szene
  • Sprite-Pivots auf Custom / Pixels Modus gesetzt — ein zentraler Pivot auf einem Sprite mit ungeraden Abmessungen (z.B. 15×15) landet bei 7,5px, was einen 0,5px-Versatz verursacht

→ Code: references/sprite-settings.cs — GetImporter() und FixSpriteImportSettings().

Editor-Snap-Einstellungen:

  • Grid-Größe = 1 / assetsPPU auf allen Achsen (z.B. PPU 16 → 0,0625, PPU 100 → 0,01)
  • Grid-Snapping im Grid- und Snap-Overlay aktiviert
  • Zum Snappen vorhandener GameObjects: diese auswählen → Align Selected → All Axes

Kameraeinrichtung:

  • Kameraprojektion = Orthographic
  • Pixel Perfect Camera-Komponente vorhanden und korrekter Typ für die Pipeline
  • allowHDR, allowMSAA, allowDynamicResolution alle false
  • Die Szenenansicht zeigt zwei grüne Begrenzungsrahmen auf dem Kamera-Gizmo — durchgehend = sichtbarer Bereich, gepunktet = Referenzauflösung

→ Code: references/camera-setup-urp.cs — vollständige URP-Kamera + PP-Kamera-Konfiguration. → Code: references/camera-setup-builtin.cs — eigenständige Built-in-Konfiguration.

Projekt-Qualitätseinstellungen:

  • Anti-Aliasing = 0 in den Qualitätseinstellungen
  • Anisotrope Filterung = Deaktiviert

API-Referenz

Vollständige Tabellen mit Eigenschaften/Methoden, GridSnapping- und CropFrame-Enum-Werte und empfohlene Konfigurationen: → references/api-reference.md — lesen Sie dies, wenn Sie Kameraeinrichtungscode schreiben oder überprüfen.

Kurze Enum-Zusammenfassung:

GridSnapping: None · PixelSnapping (Standard) · UpscaleRenderTexture (authentisch niedrige Auflösung; inkompatibel mit Nachbearbeitung und UI-Text)

CropFrame: None · Pillarbox · Letterbox · Windowbox (sicherster Standard) · StretchFill


Referenzauflösung

Wählen Sie aus, bevor Sie Assets erstellen. Ändern Sie sie nie, nachdem die Asset-Produktion begonnen hat.

Referenzauflösung1080p1440p4K
320 × 1806×8×12×
480 × 2704×~5,3×8×
640 × 3603×4×6×

320×180 ist die sicherste allgemeine Wahl. Für Bildschirme ohne ganzzahligen Skalierungsfaktor (z.B. 1366×768) verwenden Sie cropFrame = Windowbox, um schwarze Balken hinzuzufügen, anstatt auf einen Bruchfaktor zu skalieren.


Migration & Kompatibilität

URP-Projekt mit der eigenständigen Built-in-Komponente

Symptom: DetectPipeline() gibt URP zurück, aber die Kamera hat UnityEngine.U2D.PixelPerfectCamera. Symptome sind subtil, da die eigenständige Komponente ENABLE_URP-bedingten Code hat.

Fix:

  1. Entfernen Sie com.unity.2d.pixel-perfect aus dem Paketmanager
  2. Entfernen Sie UnityEngine.U2D.PixelPerfectCamera von jeder Kamera
  3. Fügen Sie UnityEngine.Rendering.Universal.PixelPerfectCamera hinzu
  4. Konfigurieren Sie neu — Booleans (pixelSnapping, upscaleRT, cropFrameX/Y) werden zu Enums (gridSnapping, cropFrame)

→ Erkennungscode: references/pipeline-detection.cs (Ende der Datei).

Alter URP-Namespace (vor Unity 2022 / URP vor 13.x)

Symptom: Compilerfehler, die auf UnityEngine.Experimental.Rendering.Universal verweisen.

Fix: Ersetzen Sie using UnityEngine.Experimental.Rendering.Universal; durch using UnityEngine.Rendering.Universal;. Aktualisieren Sie alle assembly-qualifizierten Typzeichenfolgen. Das [MovedFrom]-Attribut kümmert sich automatisch um die Serialisierung — Komponenten auf GameObjects überleben das Upgrade.


Häufige Probleme & Lösungen

Verschwommene Sprites

Fix: Setzen Sie Filter Mode auf Point für alle relevanten Sprites, deaktivieren Sie Mip Maps und deaktivieren Sie AA in den Qualitätseinstellungen. → Code: references/sprite-settings.cs

Tilemap-Lücken zwischen Kacheln

Arbeiten Sie der Reihe nach durch — Workarounds wie negativer Zellabstand oder PPU = 31,99 brechen, wenn sich die Kamera bewegt.

#ÜberprüfungFix
1Sprite-Atlas mit Tight Packing aus, Padding ≥ 4, Sprite Packer Mode aktiviert?Aktivieren Sie den Sprite Packer Mode in den Editor-Einstellungen; setzen Sie im Atlas Padding ≥ 4 und schalten Sie Tight Packing aus
2Mipmaps auf Kacheltexturen und Atlas deaktiviert?Deaktivieren Sie Generate Mip Maps
3AA = 0, MSAA an der Kamera aus?Deaktivieren Sie AA global
4Komprimierung = None?RGBA 32-Bit unkomprimiert
5Alle Kachel-Sprites haben gerade Pixelabmessungen?Ungerade Abmessungen verursachen einen 0,5px-Grid-Versatz
6PPU = Kachel-Pixelbreite? (16×16 → PPU 16)PPU-Mismatch hinterlässt physische Lücken
7Lücken nur während Kamerabewegung, nachdem alle oben genannten Punkte bestanden sind?Verwenden Sie PP-Kamera-Pixel-Snapping; verwenden Sie nicht cellGap = -0.01f

Cinemachine-Konflikt

Ursache: Sowohl Cinemachine als auch die Pixel Perfect Camera schreiben jedes Bild in die orthografische Größe.

Fix: Fügen Sie die CinemachinePixelPerfect-Erweiterung über das Dropdown-Menü „Add Extension“ auf jeder virtuellen Kamera hinzu. Fügen Sie sie nicht über AddComponent im Code hinzu.

Bekannte Einschränkungen:

  • Kamera-Überblendungen zwischen virtuellen Kameras sind während Übergängen nicht pixelgenau
  • UpscaleRenderTexture reduziert gültige pixelgenaue orthografische Größen, was zu Abweichungen beim Bildausschnitt führen kann
  • Target Group + Framing Transposer verursachen sichtbare Ruckler (keine Lösung verfügbar)

Nachbearbeitungsunschärfe mit upscaleRT

Ursache: Die Nachbearbeitung läuft, nachdem die PP-Kamera die Render-Textur hochskaliert hat.

Einfache Lösung: Deaktivieren Sie upscaleRT. Die Nachbearbeitung läuft dann in nativer Bildschirmauflösung.

Erweiterte Lösung (Unity 6 URP): Fügen Sie eine ScriptableRendererFeature2D bei RenderPassEvent2D.AfterRenderingPostProcessing ein. Verwenden Sie 2D-spezifische Basisklassen — ScriptableRendererFeature (3D-Basisklasse) wird in einem URP 2D-Renderer stillschweigend ignoriert.

UI-Text verschwommen mit upscaleRT

Status: Bekanntes U

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

unity-technologies/audio-setup-mixers

Scans the scene and audio assets to appropriately route Audio Sources into existing Audio Mixer Groups, classifying each source by what it plays. Use when the user asks about cleaning up mixer assignments, routing audio through a mixer, or which group a sound belongs in. Creating mixers and groups, and setting volumes, are not automated — the skill inventories what exists and asks the user to add anything missing.

unity-technologies/build-live-game

Build and operate a live game using Unity Services. Use when the user needs to implement, connect, or debug backend-driven features — battle passes, achievements, player progression, cloud saves, leaderboards, matchmaking, virtual economies, server-authoritative logic, anti-cheat, player accounts and authentication, remote configuration, feature flags, A/B testing, analytics, or cloud resource deployment. Triggers on live-ops, live service, backend, server authority, cloud code, cloud save, remote config, player data, retention, monetization loop, season pass, ranking, multiplayer sessions, lobbies, or any Unity Services integration.

unity-technologies/generate-editor-search-query

Generates Unity Search / Quick Search queries and opens the Unity Search window for read-only Unity Editor asset or scene-object lookup requests. Always use when the user asks to find, search, show, locate, filter, look up, query, or list concrete assets or scene objects in the current project or scene, even if Unity Search is not named. Covers materials, textures, prefabs, scenes, scripts, shaders, GameObjects, components, Lights, Cameras, UI objects, labels, paths, references, selected or named assets, and asset types. Also use when the user explicitly mentions Unity Search, Quick Search, Search window, open Search, or asks what Unity Search query to use. Do not use for general project overview, project structure, folder-purpose summaries, gameplay/system explanations, how-to programming questions, web search, repository text search, build logs, package installation, menu or settings search, modifying results, or non-Unity filesystem search unless the user explicitly asks to use Unity Search.

unity-technologies/implement-in-app-purchases

Implement, configure, and debug Unity In-App Purchases (IAP) — store connection, product catalog, consumable/non-consumable/subscription purchases, two-step pending-confirm flow, receipt validation, entitlement checking, restore transactions, Apple extensions (promotional purchases, Ask-to-Buy, code redemption), and Google Play extensions (subscription upgrade/downgrade), D2C Capabilities(direct to customer), 3rd party payment provider (Stripe/Coda) via Unity IAP/Unity Cloud. Use when the user needs to add, modify, debug, or migrate from native Android/iOS billing, 3rd party packages(RevenueCat/Adapty/Essential Kit/Unipay supported) to IAP. Triggers on microtransactions (MTX), monetization, real-money purchases, store purchases, buying items, support D2C, purchase via Stripe/Coda, migrate from native billing(Google's BillingClient or Apple's StoreKit/SKPaymentQueue/SKProduct)/RevenueCat/Adapty/EssentialKit/Unipay.

unity-technologies/initialize-ai-navigation

Sets up and configures the Unity AI Navigation system — NavMesh surfaces, NavMesh agents, obstacles, links, modifiers, areas and costs. Use when creating walkable navigation meshes, adding pathfinding agents, setting up patrol routes, configuring obstacle avoidance and carving, connecting separate NavMeshes with links, coupling navigation with animation, or troubleshooting navigation issues.

unity-technologies/levelplay-unity-integration

Integrates the LevelPlay Mediation SDK via the Ads Mediation UPM package. Use when a developer asks about adding ads to a Unity game, implementing rewarded, interstitial, or banner ads, setting up ad mediation, configuring ad networks, installing or updating the Ads Mediation package, troubleshooting LevelPlay namespace errors, resolving Android gradle or iOS CocoaPods dependency issues for ads, configuring ATT or privacy settings for ad compliance, tracking impression-level revenue (ILRD), initializing the LevelPlay SDK, or setting up ad unit IDs. Also use when a developer wants to monetize their Unity game with ads, asks how to get started with LevelPlay, ads, or mediation, or needs help with any part of the LevelPlay integration workflow including platform-specific setup for iOS or Android. Also use when upgrading the LevelPlay or IronSource SDK version, migrating from deprecated IronSource.Agent APIs, or migrating a game from Unity Ads to LevelPlay.

unity-technologies/localization

Sets up and configures Unity Localization, including locales, String/Asset Tables, CJK font support, and Addressables workflows. Use when the user wants to add languages to a project, translate UI text, support Asian (CJK) languages with TMP fonts, or mentions i18n, l10n, multilingual support, or making a game support multiple languages.

unity-technologies/manage-sprite-atlas

Manage SpriteAtlas using prebuild pipeline with IPreprocessBuildWithReport (DEFAULT approach). Use it to configure master atlases, variant atlases, texture settings, packing settings, and platform-specific configurations. Use when the user asks about creating sprite atlases, optimizing sprites, configuring atlas settings, adding sprites to atlases, creating variant atlases, implementing automated atlas generation, or runtime sprite atlas access. Always use prebuild approach unless user explicitly requests manual authoring.

unity-technologies/migrate-birp-to-urp

Plans, executes, and troubleshoots Unity projects moving from the Built-in Render Pipeline (BiRP/BIRP/Built-in RP) to the Universal Render Pipeline (URP). Use when the user asks to upgrade, convert, switch, or migrate a project, scene, material, or shader to URP/Universal Render Pipeline; fix pink or magenta materials after URP; convert Built-in materials/shaders; move a 2D project to URP 2D; review lighting, quality, post-processing, baked lightmaps, or reflection probes after URP; or diagnose visual problems after a render-pipeline migration.

Verwandte Skills