audio-setup-mixers について
実行中の Editor で Audio Mixer を調査し、Audio Source を既存グループへ割り当てる Unity 開発スキルです。分類案を確認してから処理し、公開 API がないため Mixer やグループの作成はユーザーに委ねます。
主な機能
- 01Mixer とグループの一覧化
- 02音に応じた Audio Source の分類
- 03ルーティング案の提示と確認
- 04Unity API による音源のルーティング
- 05未割り当て音源と不足グループの報告
活用シーン
- 01台詞、音楽、効果音のルーティング
- 02Audio Source のグループ別整理
- 03ルーティング未設定の音源の特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ unity-technologies/ unity-agent-plugin --skill audio-setup-mixersインストール後、Claude Code で/audio-setup-mixersを入力して読み込まれたか確認します。
同梱ファイルreferences/api.mdSECURITY.md
詳細
オーディオミキサーのセットアップ
Audio Source をミキサーグループにルーティングする操作は、起動中の Editor でのみ実行できるシーン編集です。そのため、このスキルでは C# を実行できるライブ Editor が必要です。まずステップ 0 で、その環境を確認します。
このスキルが自動化することと、ユーザーに引き継ぐこと。 ミキサーの確認や Audio Source のグループへのルーティングは、すべて公開 Unity API で実行できます。面倒なのは、数十個ものソースを調べ、それぞれが何を再生するかで分類する作業です。ミキサーやグループの作成には公開 API がありません。Unity が安定性を保証していない型だけで実現できます。そのため、このスキルがユーザーに無断でグループを作成することはありません。既存のものを一覧にして、ルーティング案を提示し、不足しているグループがあれば Audio Mixer ウィンドウで追加するよう依頼したうえで、ルーティングをすべて実行します。
これは回避すべき制約ではなく、意図的な制限です。リフレクションでグループを作成したり、.mixer ファイルを直接編集したりしないでください。ミキサーの構造を安全に確認せずに編集することはできません。
ステップ 0:Editor で C# を実行できることを確認する
以下の C# の各ステップは、Unity CLI を通じてライブ Editor 内で実行します。そこまでの準備は unity-cli スキルが担当します。CLI のインストール、Editor が接続されていることの確認、プロジェクトへの com.unity.pipeline パッケージの追加、Editor が本当に存在しない場合と Safe Mode で停止している場合の見分け方、Editor のコマンドカタログの確認は、そのスキルに従ってください。まずそちらを実行し、ここで手順を再検討しないでください。
そのスキルでは把握できないことが 2 つあります。
- 接続可能な Editor だけでなく、特に
script evalが必要です。 コマンドカタログに表示されることを確認してください。これは CLI ではなく Pipeline パッケージのバージョンに依存するため、正常にインストールされていても利用できないことがあります。見つからない場合は、その旨を伝えて中止してください。 .mixerファイルを手動で編集する方法に切り替えないでください。 ミキサーのルーティングは安全に確認せずに編集できないため、Editor に接続できない場合は作業を中止してください。即興で回避するための合図ではありません。
script eval が利用可能になったら、以下の各 C# ステップを実行できます。
接続中の Editor で script eval コマンドを使って C# を実行してください。パラメーターの形式は決めつけず、unity command --format json で確認してください。インライン形式は unity command script eval --caller plugin --skill audio-setup-mixers --code '<snippet>' です。また、Pipeline のバージョンによっては、ファイルからスニペットを実行する script eval_file も登録されています。script eval_file を使う前に、必ずコマンドカタログを確認してください。このコマンドは利用できないことがよくあります。 unity command のデフォルトタイムアウトは 30 秒です。
C# を script eval に渡す
script eval がコンパイルするのはファイルではなく、ステートメントブロックです。そのため、次の 2 点に注意してください。どちらも警告ではなくコンパイルエラーになります。
usingディレクティブは使用できません。 コンパイラーはusing UnityEngine;をリソース破棄ステートメントとして読み取り、拒否します(CS0210)。- 型名は完全修飾する必要があります。
AssetDatabaseやVolumeだけでは解決できず(CS0246/CS0103)、Objectだけではobjectと曖昧になります(CS0104)。
以下のスニペットがファイル形式で記述されている場合(読みやすさのために using を含めている場合や、プロジェクトに保存することを想定している場合)は、script eval に渡す前に型名を完全修飾してください。
ステップ 1:事前確認
ユーザーがオーディオミキサーを明示的に依頼していない場合は、セットアップを進めてよいか確認してください。
次に、references/api.md のミキサー一覧取得スニペットを使って既存のものを調べ、ステップ 0 の説明に従ってエディターを操作してください。これにより、プロジェクト内のすべてのミキサーと、それぞれのグループ名を確認できます。
戻り値はグループのフラットな一覧であり、親子関係のツリーではありません。ルーティング先を決めるには十分であり、公開 API で取得できる情報はこれだけです。会話の内容によって階層が重要になる場合は、ユーザーにオーディオミキサーウィンドウを確認してもらい、説明してもらってください。確認のために非公開のツリー API を使ってはいけません。
プロジェクトにミキサーがまったくない場合は、 独自に作成しようとせず、その旨を伝えて作業を中止してください。ミキサーを作成する公開 API はありません。ユーザーにミキサーを作成してもらい(Window → Audio → Audio Mixer を開き、Mixers の横にある + をクリック)、作成されたらここから再開してください。
ステップ 2:シーン内の参照を探す
すべてのオーディオソースコンポーネントを見つけ、割り当てられているジェネレーターアセット名を確認し、サウンド名に合ったクラスまたはカテゴリを判定してください。できれば、すでに存在するものを使います。 オーディオクリップのアセット名の例:
- "FootStep4_Sound" → Foley
- "Dialogue_Female_Scene4" → Vox/Voice/Dialogue
- "GunShot" → SFX
- "Menu_Theme_Variation" → Music
割り当てられたアセット名が内容を示していない場合や、アセットが存在しない場合は、ゲームオブジェクト名や、近くにある可能性のある MonoBehaviour 名を確認してください。 分類が難しそうな場合や確信が持てない場合は、「Uncategorized」グループを作成するよう依頼してください。
ステップ 3:グループ一覧に合意し、不足しているグループを作成してもらう
ステップ 2 の分類をルーティング案として提示してください。各オーディオソースと、ルーティング先として予定しているグループを示し、ユーザーと調整します。
続行する前に、ユーザーの返答を待ってください。
カテゴリを本当にカバーしている既存グループがあれば、名称を別のものにしたかったとしても、そちらを優先してください。ただし、ミキシングエンジニアが分けておくカテゴリをまとめてはいけません。Foley は SFX の一部であり、別の言い方ではありません。したがって、Foley グループがあるからといって、銃声をそこに割り当ててはいけません。既存のグループでカテゴリの一部しかカバーできない場合は、どのカテゴリに適合するか、どのカテゴリに新しいグループが必要かを伝え、ユーザーに判断してもらってください。
対応するグループがないカテゴリについては、グループを作成できません。グループ作成用の公開 API はありません。references/api.md の末尾にあるとおり、ミキサー名と正確なグループ名を指定してユーザーに依頼してください。その後、グループが存在することとスペルを確認するため、一覧取得スニペットを再実行してください。ユーザーが作成したと決めつけたり、依頼したとおりの名前で作成したと決めつけたりしてはいけません。
ステップ 4:オーディオソースをルーティングする
グループの一覧が確定し、存在することも確認できたら、references/api.md のルーティング用スニペットを使って、各 Audio Source の出力グループを設定します。これは全工程で公開 API のみを使用し、すべてを一度に取り消せるよう、処理全体を 1 つの Undo ステップでまとめます。
分類に使用した識別子をキーにしてマッピングします。 ステップ 2 では、まずクリップのアセット名を読み取り、次に GameObject 名を使います。したがって、マッピングではどちらも受け付けますが、この 2 つは異なる識別子です。誤った識別子をキーにすると、ソースが割り当てられません。
推測で済ませず、次の 3 点を報告します。
- スニペットが返した
NO SUCH GROUPの項目。 これは、想定していたグループがミキサーに存在しないことを意味します。通常はスペルの違いが原因です。ソースを黙ってスキップせず、ユーザーと一緒に解決してください。 NOT IN THE MAPPINGの項目。 これらは、分類で見落とした Audio Source です。ソースが割り当てられないままなのに、ルーティングが成功したと報告するのは、成功したように見えてしまうため、ここでは最悪の結果です。- 変更されたのはシーンであり、ミキサーアセットではありません。 ルーティング設定は Audio Source に保存されるため、シーンを保存して初めて変更が保持されます。ユーザーに伝え、同意が得られた場合にのみ保存してください。
音量、エフェクト、親の変更は対象外です。 これらは非公開 API に属します。ユーザーから依頼された場合は、ルーティングは完了していることを伝え、ミックス自体については Audio Mixer ウィンドウを案内してください。
参考資料
references/api.md を参照してください。