Communitygithub.com

king-beomsoo/unity-motion-match

Automatisches Erkennen und Binden vorhandener Screen-Space Unity uGUI aus Szenen- und Laufzeithierarchien, Extrahieren von UI-Vorlagen und wiederholtes Abgleichen von Referenzbewegungen ohne projektspezifischen Adapter. Bewahrt Layout und serialisierte Verbindungen; meldet nicht unterstützte UI und nicht verifiziertes Spielverhalten. Enthält optionale Legacy-Spielprofile.

Was ist unity-motion-match?

Der Skill 'unity-motion-match' automatisiert den gesamten Workflow zum Ersetzen von Referenzbewegungen auf bestehenden Unity uGUI-Elementen: Übersetzung, einheitliche Skalierung und Deckkraft mit einer festen Kamera. Er arbeitet in einer isolierten Projektkopie und verwendet einen gemeinsamen Editor-Bridge sowie generierte Bindungsdaten, ohne spielspezifische C#-Adapter oder private Spielmethoden. Der Skill unterstützt die Unity Editor-Pfade sowie Python-Abhängigkeiten wie numpy, scipy, opencv-python und Pillow; ffmpeg wird nur für Videoeingabe benötigt. Der Prozess umfasst zwei Hauptphasen: 'prepare' zur automatischen Erkennung von UI-Strukturen (Canvas, RectTransform, Layout, Komponenten), Extraktion von Hintergrund-/Rest-/RGBA-Vorlagen und Erstellung von Bindungsdaten; und 'match' zur pixelbasierten Bewegungsanalyse, Erzeugung von nativen AnimationClips auf gebundenen Objekten und Prüfung der Layout-/Bindungskonsistenz. Der Skill validiert automatisch Anker/Pivot/Größen/Layout-Konfiguration, serialisierte Objektreferenzen, persistente Ereignisbindungen, finale Pose und Button-Raycast-Ziele. Er führt keine unbekannten Buttons aus und prüft keine spielspezifischen Semantiken (z.B. Käufe, Authentifizierung). Optionale Legacy-Profile ('trash-dash', 'survivors-kit') ermöglichen Interaktionstests für bekannte Spiele. Inspektion von Ausgaben wie 'selection.html', 'auto-report.json', 'auto-bindings.json' und 'rest.png' ist zur Qualitätssicherung unerlässlich.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/king-beomsoo/unity-motion-match/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Unity-Bewegungsabgleich

Verwenden Sie dies zum Ersetzen von Referenzbewegungen auf vorhandenem uGUI: Übersetzung, einheitliche Skalierung und Deckkraft mit einer festen Kamera. Arbeiten Sie in einer isolierten Projektkopie. Der standardmäßige auto-Pfad verwendet eine gemeinsame Editor-Bridge und generierte Bindungsdaten, keine spielspezifischen C#-Adapter oder privaten Spielmethoden.

Erkennen und Vorbereiten

Lesen Sie Automatische Bindung für Auswahl, Ausgaben und Grenzen, und Validierungsumfang für getestetes Verhalten und verbleibende visuelle Fehlanpassungen. Für das Compositing-Modell, Originalpapiere und einen reproduzierbaren Bewegungs-Benchmark lesen Sie Methode und Evidenz. Die Quelle muss mit dem ausgewählten Unity Editor kompilieren und uGUI enthalten. Python benötigt numpy, scipy, opencv-python und Pillow; ffmpeg wird nur für Videoeingabe benötigt.

python scripts/unity.py prepare --source C:/project --workspace C:/motion-work --editor "C:/Program Files/Unity/Hub/Editor/6000.3.21f1/Editor/Unity.exe"

Dies kopiert Assets/Packages/ProjectSettings ohne Library, inventarisiert die Szenen-Canvas/RectTransform/Layout/Komponentenstruktur, wählt eine Startszene aus, betritt den normalen Play-Modus, erkennt die resultierende UI, wählt unabhängige sichtbare Gruppen aus und extrahiert Hintergrund-/Rest-/RGBA-Vorlagen. Wiederholte Starts etablieren eine stabile Post-Import-Baseline. Es wird keine Szene gespeichert und die Quelle nicht bearbeitet.

Überprüfen Sie selection.html, auto-report.json, auto-bindings.json und extrahierte rest.png-Bilder. Die automatische Auswahl ist ein struktureller Vorschlag, kein Wissen darüber, welche UI der Benutzer animieren möchte. Verwenden Sie --scene, --canvas oder wiederholte --target-Daten-Selektoren, wenn die Aufgabe einen Bildschirm/eine Gruppe angibt. Diese benötigen keinen Adaptercode. Doppelte Namen erfordern eine Inventory-Bindungs-ID oder einen eindeutigen Pfad.

Für Inventory nur verwenden Sie scan mit denselben Quell-/Arbeitsbereichs-Argumenten. Für eine serialisierte Szenenvorschau ohne Spielstart wählen Sie explizit --execution edit; kennzeichnen Sie es als Vorschau, nicht als Laufzeitverifikation. Ersetzen Sie nicht stillschweigend eine Bearbeitungsvorschau, wenn die Play-Mode-Initialisierung fehlschlägt.

Natives Unity erfordert möglicherweise den genehmigten Ausführungspfad des Hosts für die Lizenzierung. Verwenden Sie die vorhandene Autorisierung für die isolierte Kopie. Bei fehlgeschlagenem Start überprüfen Sie das Protokoll; wiederholen Sie nicht wiederholt oder reparieren Sie nicht stillschweigend nicht zusammenhängenden Spielcode. Ein vorbereiteter Arbeitsbereich ist ein Schnappschuss: Nach Änderung der Quell-UI erstellen Sie einen neuen Arbeitsbereich.

Abgleichen und Erfassen

Platzieren Sie Aufnahmen unter REFERENCE_ROOT/CASE-REVISION/, wobei Sie Fall-IDs in workspace.json verwenden, z. B. c_abcd1234-r1/reference.mp4. Die Erfassung verwendet Zwei-Sekunden-Clips bei 30fps, die in der ursprünglichen Ruheposition enden.

python scripts/unity.py match --workspace C:/motion-work --reference C:/references --revision r1

Der Befehl schätzt Bewegung aus Pixeln, schreibt solutions/REVISION, sampelt native AnimationClips auf gebundenen vorhandenen Objekten, erfasst die Unity-Ausgabe und überprüft die Bewahrung. Neue Aufnahmen erfordern immer eine erneute Extraktion. Für dieselbe Aufnahme passt scripts/motion.py revise Geschwindigkeit, achsspezifische Distanz oder Staffelung an; behalten Sie einen Ruhepositions-Schlüssel bei zwei Sekunden bei der Bearbeitung des Timings und führen Sie unity.py capture --workspace ... --revision ... nach Bearbeitungen erneut aus.

Der Pixel-Fitter verwendet vollauflösende gefilterte Signale und kalibriert kleine Vorlagen-/Rasterunterschiede vom finalen Ruheframe der Referenz. Überprüfen Sie *.fit.json auf referenceRestCalibration. Für ein einfarbiges Grafik mit undurchsichtigen Pixeln zeichnet flatPaintOpacity auf, wie viele Frames genügend separate sichtbare Patches hatten, um die Gruppendeckkraft zu messen. Eine Aufnahme, die absichtlich in einer anderen Pose/Deckkraft endet, ist keine gültige Eingabe für diesen Workflow.

Exportiert automatisch eine separate root-relative .anim für jedes Ziel, wodurch mehrdeutige Unity-Animationspfade vermieden werden, wenn Geschwister identische Namen haben. Bindungen identifizieren das tatsächliche Szenen-/Hierarchieobjekt. Es werden keine Wrapper-Objekte, Neuzuordnungen, umbenannte Steuerelemente oder Callback-Umverdrahtungen eingeführt.

Überprüfen Sie die Ausgabe gegen die Referenz, bevor Sie die Bewegung als übereinstimmend bezeichnen. Das Bestehen von Layout-/Bindungsprüfungen ist kein Beweis für visuelle Ähnlichkeit. Blasse Pixel, Clipping, ähnliche UI und überlappende Deckkraft können dennoch Korrekturen erfordern.

Bei MP4s überprüft der Fitter den stationären Hintergrund auf Unterschiede, die durch die Dekodierung eingeführt wurden. Bei geeigneten einfarbigen Grafiken schätzt er die Deckkraft aus der Helligkeit, die von vielen Strichen gemeinsam genutzt wird. In *.fit.json zählt videoOpacity.measuredFrames Frames mit verwendbaren Video-Beweisen vor restStartsAt; andere Frames behalten die frühere Schätzung bei. Überprüfen Sie Überlappungen und abrupte Übergänge in der Wiedergabe. Eine numerische Worst-Frame-Grenze erfordert bekannte Referenz-Deckkraftwerte.

Was die Prüfungen feststellen

Auto vergleicht Anker/Pivots/Größen/Layout-Konfiguration, serialisierte Objektreferenzen und persistente Ereignisbindungen, finale Pose, Button-Raycast-Ziele, wenn verfügbar, und Wiederherstellung bei zwei Viewport-Größen. Es ruft keine unbekannten Buttons auf und folgert nicht, ob Käufe, Authentifizierung, Navigation oder andere spielspezifische Ergebnisse korrekt sind. gameSpecificSemanticsVerified bleibt falsch.

Führen Sie unity.py audit --workspace ... für die Asset-/Konfigurations-Baseline aus. Halten Sie Erkennungs-, Vorbereitungs- und Ersatzkosten getrennt. Der vorherige Handprofil-Benchmark etabliert keine Leistung für die automatische Erkennung.

Optional --profile trash-dash und --profile survivors-kit behalten frühere bekannte Spiel-Interaktionstests bei. Lesen Sie Legacy-Profile nur, wenn diese semantischen Tests nützlich sind; sie werden für andere uGUI-Projekte nicht benötigt.

Verwandte Skills