Audio Mixer のセットアップ
Audio Source をミキサーグループにルーティングすることは、実行中のエディタでのみ可能なシーン編集です。そのため、このスキルでは C# を実行可能なライブエディタが必要です。ステップ 0 でその前提を確立します。
このスキルが自動化することと、ユーザーに委ねること。 ミキサーの検査と Audio Source のグループへのルーティングは完全にパブリックな Unity API で実行可能であり、これが最も面倒な部分です——数十のソースを調べ、それぞれが再生する内容に基づいて分類します。しかし、ミキサーやグループの作成にはパブリック API が存在しません。これらの操作は、Unity が安定性を保証しない型にのみ依存しています。そのため、このスキルは裏でグループを作成することはありません。既存のグループを調査し、ルーティング案を提案し、不足するグループがあれば Audio Mixer ウィンドウでユーザーが追加するよう促し、その後すべてのルーティングを自動実行します。
これは意図的な制限であり、回避すべきギャップではありません。リフレクションを使ってグループを作成したり、.mixer ファイルを手動で編集したりしないでください。ミキサー構造は、盲目的に安全に編集できるものではありません。
ステップ 0: エディタで C# を実行できることを確認する
後続のすべての C# ステップは、Unity CLI を介してライブエディタ内で実行されます。unity-cli スキルがその環境を構築します——CLI のインストール、接続されたエディタの確認、プロジェクトへの com.unity.pipeline パッケージの追加、実際に存在しないエディタとセーフモードでスタックしているエディタの区別、エディタのコマンドカタログの検出などです。まずそのスキルに従ってください。ここでそれを再導出しないでください。
このスキルが代わりに判断できないことが 2 つあります:
- 特に
evalが必要です、単に到達可能なエディタだけではありません。カタログにevalが表示されていることを確認してください。その有無は CLI ではなく Pipeline パッケージのバージョンに依存するため、正常にインストールされていても欠落している可能性があります。欠落している場合はその旨を伝えて停止してください。 .mixerファイルを手動で編集する代替手段に頼らないでください。 ミキサールーティングは盲目的に安全に編集できるものではないため、エディタに到達できない場合は停止であり、即興で対応する合図ではありません。
eval が利用可能になれば、後続の各 C# ステップはそれを介して実行されます。
接続されたエディタで eval コマンドを使用して C# を実行します。そのパラメータ形式は unity command --format json で確認し、仮定しないでください。インライン形式は unity command eval --code '<snippet>' であり、一部の Pipeline バージョンではファイルからスニペットを実行するための eval_file も登録されています。eval_file に頼る前にカタログを確認してください。頻繁に欠落しています。 unity command のデフォルトタイムアウトは 30 秒です。
eval に C# を渡す
eval は ステートメントブロック をコンパイルします。ファイルではありません。これにより 2 つの結果が生じ、どちらも警告ではなくコンパイルエラーになります:
usingディレクティブは使用できません。 コンパイラはusing UnityEngine;をリソース破棄ステートメントと解釈し、拒否します (CS0210)。- 型は完全修飾名で指定する必要があります。 裸の
AssetDatabaseやVolumeは解決されず (CS0246/CS0103)、裸のObjectはobjectと曖昧になります (CS0104)。
以下のスニペットがファイルとして記述されている場合——可読性のために using を含めたり、プロジェクトに保存することを意図している場合——eval に渡す前に型を修飾してください。
ステップ 1: 事前確認
ユーザーが明示的に Audio Mixer を要求していない場合、セットアップを進めてよいか確認します。
次に、references/api.md のミキサーインベントリスニペットを使用して、既存のミキサーを調査します。ステップ 0 で説明したようにエディタを介して実行します。これにより、プロジェクト内のすべてのミキサーと各ミキサーのグループ名が取得できます。
これは親子ツリーではなくグループのフラットリストを返します。ルーティングには十分であり、パブリック API が公開するのはこれだけです。階層が会話の上で重要であれば、ユーザーに Audio Mixer ウィンドウを見て説明するよう依頼してください。非公開のツリー API に手を出して調べないでください。
プロジェクトにミキサーがまったくない場合、 即興で作成せずにその旨を伝えて停止します。ミキサーの作成にはパブリック API がありません。ユーザーにミキサーを作成するよう依頼してください (Window → Audio → Audio Mixer、次に Mixers の横の +)。作成され次第、ここから再開します。
ステップ 2: シーン内の参照を見つける
すべての Audio Source コンポーネントを見つけ、割り当てられたジェネレーターアセット名を確認し、サウンド名に適したクラスまたはカテゴリを一般化します。理想的には既存のものを使用します。 Audio Clip アセット名の例:
- "FootStep4_Sound" -> Foley
- "Dialogue_Female_Scene4" -> Vox/Voice/Dialogue
- "GunShot" -> SFX
- "Menu_Theme_Variation" -> Music
割り当てられたアセットが説明的でない場合や存在しない場合は、GameObject 名や隣接する MonoBehaviour の名前を確認してみます。 Audio Source の使用方法の分類が難しい、または信頼性が低い場合は、Uncategorized グループを作成するよう依頼します。
ステップ 3: グループリストの合意と不足グループの作成
ステップ 2 の分類を提案として提示します——各 Audio Source とそれをルーティングする予定のグループ——そしてユーザーと一緒に修正します。
先に進む前にユーザーの応答を待ちます。
既存のグループがそのカテゴリを適切にカバーしている場合は、たとえ自分なら別の名前を付けていたとしても、そちらを優先します。ただし、ミキシングエンジニアなら分けて管理するカテゴリを統合しないでください——Foley は SFX のサブセットであり、単なる別名ではありません。したがって、既存の Foley グループがあるからといって、銃声をそこにルーティングしてはいけません。既存のグループがカテゴリを部分的にしかカバーしていない場合は、どのグループが適合し、どのグループに新しいグループが必要かを伝え、ユーザーに判断を委ねます。
一致するグループがないカテゴリについては、グループを作成できません——そのためのパブリック API はありません。references/api.md の最後に示されているように、ミキサー名と正確なグループ名を具体的にユーザーに伝えます。その後、インベントリスニペットを再実行してグループが存在し、スペルが正しいことを確認してからルーティングします。ユーザーが実行したことを前提とせず、こちらが依頼したとおりにスペルしたことを前提としないでください。
ステップ 4: Audio Source のルーティング
グループリストが確定し、存在が確認されたら、references/api.md のルーティングスニペットを使用して各 Audio Source の出力グループを割り当てます。これはすべてパブリック API であり、全体の処理を単一の Undo ステップでラップするため、ユーザーは一度にすべてを元に戻せます。
分類に使用した識別子でマッピングをキー設定します。 ステップ 2 はまずクリップアセット名を読み、それがない場合のみ GameObject 名にフォールバックするため、マッピングは両方を受け付けます。これらは異なる識別子であり、間違った方でキー設定するとソースがドロップされます。
以下の 3 点については、仮定せずに報告します:
- スニペットが返す
NO SUCH GROUPエントリ。 これは、期待したグループがミキサーに存在しないことを意味します——通常はスペルの違いです。ユーザーと解決し、ソースを黙ってスキップしないでください。 NOT IN THE MAPPINGエントリ。 これらは分類から漏れた Audio Source です。成功したルーティングを報告しながらソースが静かに未ルーティングのままになるのは最悪の結果です。成功と受け取られるからです。- シーンが変更されたのであって、ミキサーアセットではないこと。 ルーティングは Audio Source に保存されるため、シーンが保存されるまで永続しません。ユーザーにその旨を伝え、同意がある場合のみ保存します。
ボリューム、エフェクト、親子構造の変更は対象外です。 これらは非公開 API に依存します。ユーザーが要求した場合は、ルーティングは完了したと伝え、ミキシング自体については Audio Mixer ウィンドウを参照するよう指示します。
参考情報
references/api.md を参照してください。