Audio Mixer Einrichtung
Das Weiterleiten einer Audio-Quelle zu einer Mixer-Gruppe ist eine Szenenbearbeitung, die nur ein laufender Editor vornehmen kann, daher benötigt dieses Skill einen Live-Editor, in dem C# ausgeführt werden kann. Schritt 0 stellt dies sicher, bevor etwas anderes passiert.
Was dieses Skill automatisiert und was es an Sie zurückgibt. Das Inspizieren von Mixern und das Weiterleiten von Audio-Quellen in Gruppen erfolgt vollständig über die öffentliche Unity-API und ist der mühsame Teil – Dutzende Quellen durchzugehen und sie nach dem zu klassifizieren, was sie abspielen. Das Erstellen eines Mixers oder einer Gruppe hat keine öffentliche API; es existiert nur in Typen, deren Stabilität Unity nicht garantiert. Daher wird dieses Skill keine Gruppen hinter Ihrem Rücken erstellen. Es inventarisiert, was existiert, schlägt die Weiterleitung vor, bittet Sie, fehlende Gruppen im Audio-Mixer-Fenster hinzuzufügen, und führt dann die gesamte Weiterleitung selbst durch.
Das ist eine bewusste Einschränkung, keine Lücke, die umgangen werden muss. Verwenden Sie keine Reflection zum Erstellen von Gruppen und bearbeiten Sie keine .mixer-Datei von Hand – die Mixer-Struktur ist nicht sicher blind authorbar.
Schritt 0: Bestätigen, dass Sie C# im Editor ausführen können
Jeder C#-Schritt unten wird in einem Live-Editor über die Unity-CLI ausgeführt. Das unity-cli-Skill ist dafür zuständig, Sie dorthin zu bringen – Installation der CLI, Bestätigung eines verbundenen Editors, Hinzufügen des com.unity.pipeline-Pakets des Projekts, Unterscheiden eines wirklich abwesenden Editors von einem, der im Safe Mode steckt, und Erkennen des Befehlsverzeichnisses des Editors. Folgen Sie ihm zuerst; leiten Sie hier nichts davon neu ab.
Zwei Dinge, die es nicht für Sie wissen kann:
- Sie benötigen insbesondere
eval, nicht nur einen erreichbaren Editor. Bestätigen Sie, dass es im Katalog erscheint. Seine Verfügbarkeit hängt von der Pipeline-Paketversion ab, nicht von der CLI. Eine funktionierende Installation kann es trotzdem vermissen lassen – wenn es fehlt, sagen Sie es und stoppen Sie. - Greifen Sie nicht auf das manuelle Bearbeiten von
.mixer-Dateien zurück. Das Mixer-Routing ist nicht sicher blind authorbar, daher ist ein nicht erreichbarer Editor ein Stopp, kein Hinweis zum Improvisieren.
Sobald eval verfügbar ist, wird jeder C#-Schritt unten so ausgeführt.
Führen Sie C# über den verbundenen Editor mit dem eval-Befehl aus. Entdecken Sie seine Parameterform aus unity command --format json, anstatt eine anzunehmen – die Inline-Form ist unity command eval --code '<snippet>', und einige Pipeline-Versionen registrieren auch eval_file zum Ausführen eines Snippets aus einer Datei. Überprüfen Sie den Katalog, bevor Sie nach eval_file greifen; es ist häufig nicht vorhanden. unity command hat standardmäßig ein Timeout von 30 Sekunden.
C# an eval übergeben
eval kompiliert einen Anweisungsblock, keine Datei. Zwei Konsequenzen, die beide einen Kompilierungsfehler verursachen, keine Warnung:
- Keine
using-Direktiven. Der Compiler liestusing UnityEngine;als eine Ressourcen-Freigabe-Anweisung und lehnt sie ab (CS0210). - Typen müssen vollständig qualifiziert sein. Ein bloßes
AssetDatabaseoderVolumewird nicht aufgelöst (CS0246/CS0103), und ein bloßesObjectist mehrdeutig mitobject(CS0104).
Wo ein Snippet unten als Datei geschrieben ist – mit usings, zur Lesbarkeit oder weil es zum Speichern im Projekt gedacht ist – qualifizieren Sie die Typen, bevor Sie es an eval übergeben.
Schritt 1: Vorab-Check
Wenn der Benutzer nicht explizit nach Audio-Mixern gefragt hat, bestätigen Sie, dass er mit deren Einrichtung fortfahren möchte.
Inventarisieren Sie dann, was bereits mit dem Mixer-Inventarisierungs-Snippet in references/api.md existiert, ausgeführt im Editor wie in Schritt 0 beschrieben. Das liefert Ihnen jeden Mixer im Projekt und die Gruppennamen in jedem.
Es gibt eine flache Liste von Gruppen zurück, keinen Eltern/Kind-Baum. Das reicht zum Weiterleiten aus, und das ist alles, was die öffentliche API offenlegt. Wenn die Hierarchie für das Gespräch wichtig ist, bitten Sie den Benutzer, das Audio-Mixer-Fenster anzusehen und es zu beschreiben – greifen Sie nicht auf die nicht-öffentliche Baum-API zurück, um es herauszufinden.
Wenn das Projekt überhaupt keinen Mixer hat, sagen Sie es und stoppen Sie, anstatt einen zu improvisieren: Das Erstellen eines Mixers hat keine öffentliche API. Bitten Sie den Benutzer, einen zu erstellen (Fenster → Audio → Audio Mixer, dann das + neben Mixern), und machen Sie von hier aus weiter, sobald er existiert.
Schritt 2: Szenenreferenzen finden
Finden Sie alle Audio-Source-Komponenten, sehen Sie sich die zugewiesenen Generator-Asset-Namen an und verallgemeinern Sie eine passende Klasse oder Kategorie des Klangnamens, idealerweise etwas bereits Existierendes. Beispiele für Audio-Clip-Asset-Namen:
- „FootStep4_Sound" -> Foley
- „Dialogue_Female_Scene4" -> Vox/Sprache/Dialog
- „GunShot" -> SFX
- „Menu_Theme_Variation" -> Musik
Wenn das zugewiesene Asset nicht beschreibend ist oder nicht existiert, versuchen Sie, auf den GameObject-Namen oder mögliche angrenzende MonoBehaviour-Namen zu schauen. Bitten Sie darum, eine Gruppe „Unkategorisiert" zu erstellen, wenn es schwierig erscheint oder die Zuverlässigkeit gering ist, wie eine Audio-Quelle verwendet wird.
Schritt 3: Gruppenliste vereinbaren und fehlende Gruppen erstellen lassen
Präsentieren Sie die Klassifizierung aus Schritt 2 als vorgeschlagene Weiterleitung – jede Audio-Quelle und die Gruppe, an die Sie sie senden möchten – und überarbeiten Sie sie mit dem Benutzer.
WARTEN Sie auf die Antwort des Benutzers, bevor Sie fortfahren.
Bevorzugen Sie eine bestehende Gruppe, wenn sie die Kategorie tatsächlich abdeckt, auch wenn Sie sie anders benannt hätten. Aber kollabieren Sie keine Kategorien, die ein Toningenieur getrennt halten würde – Foley ist eine Untermenge von SFX, nicht ein anderes Wort dafür, daher gehört ein Schuss nicht in eine „Foley"-Gruppe, nur weil eine existiert. Wenn die vorhandenen Gruppen Ihre Kategorien nur teilweise abdecken, sagen Sie, welche passen und welche eine neue Gruppe benötigen, und lassen Sie den Benutzer entscheiden.
Für Kategorien ohne passende Gruppe können Sie die Gruppe nicht erstellen – es gibt keine öffentliche API dafür. Übergeben Sie es präzise, nennen Sie den Mixer und die genauen Gruppennamen, wie am Ende von references/api.md gezeigt. Führen Sie dann das Inventarisierungs-Snippet erneut aus, um zu bestätigen, dass die Gruppen existieren, und überprüfen Sie ihre Schreibweise, bevor Sie weiterleiten. Gehen Sie nicht davon aus, dass der Benutzer es getan hat, und gehen Sie nicht davon aus, dass er es so geschrieben hat, wie Sie es verlangt haben.
Schritt 4: Audio-Quellen weiterleiten
Mit der festgelegten und bestätigten Gruppenliste weisen Sie den Ausgabegruppen jeder Audio-Quelle mithilfe des Routing-Snippets in references/api.md zu. Es ist durchgängig öffentliche API und verpackt den gesamten Durchlauf in einem einzigen Undo-Schritt, sodass der Benutzer alles auf einmal rückgängig machen kann.
Schlüsseln Sie die Zuordnung auf den Bezeichner, nach dem Sie klassifiziert haben. Schritt 2 liest zuerst den Clip-Asset-Namen und fällt nur auf den GameObject-Namen zurück, daher akzeptiert die Zuordnung beides – die beiden sind unterschiedliche Bezeichner, und das Schlüsseln auf den falschen lässt Quellen unter den Tisch fallen.
Drei Dinge, die Sie melden, anstatt anzunehmen:
- Alle
NO SUCH GROUP-Einträge, die das Snippet zurückgibt. Das bedeutet, dass eine erwartete Gruppe nicht im Mixer ist – normalerweise ein Rechtschreibunterschied. Klären Sie es mit dem Benutzer, überspringen Sie die Quelle nicht stillschweigend. - Alle
NOT IN THE MAPPING-Einträge. Das sind Audio-Quellen, die Ihre Klassifizierung übersehen hat. Ein erfolgreiches Routing zu melden, während Quellen stillschweigend nicht weitergeleitet wurden, ist hier das schlechteste Ergebnis, da es als Erfolg gelesen wird. - Die Szene wurde geändert, nicht das Mixer-Asset. Das Routing lebt auf der Audio-Quelle, daher bleibt es nur bestehen, wenn die Szene gespeichert wird. Sagen Sie es dem Benutzer und speichern Sie nur mit seiner Zustimmung.
Lautstärke, Effekte und Neu-Zuordnung von Eltern sind nicht im Umfang enthalten. Diese leben auf nicht-öffentlicher API. Wenn der Benutzer danach fragt, sagen Sie, dass das Routing abgeschlossen ist, und verweisen Sie ihn für den Mix selbst an das Audio-Mixer-Fenster.
Referenzen
Siehe references/api.md.