Configuração do Mixer de Áudio
Roteamento de uma Fonte de Áudio para um grupo de mixer é uma edição de cena que apenas um Editor em execução pode realizar, portanto esta skill precisa de um Editor ao vivo no qual possa executar C#. O Passo 0 estabelece isso antes de qualquer outra coisa.
O que esta skill automatiza e o que ela devolve para você. Inspecionar mixers e rotear Fontes de Áudio para grupos é inteiramente API pública do Unity, e essa é a parte entediante — percorrer dezenas de fontes e classificá-las pelo que reproduzem. Criar um mixer ou um grupo não tem API pública; existe apenas em tipos que a Unity não se compromete a manter estáveis. Portanto, esta skill não criará grupos ocultamente. Ela inventaria o que existe, propõe o roteamento, pede que você adicione qualquer grupo faltante na janela Audio Mixer e depois realiza todo o roteamento.
Isso é um limite deliberado, não uma lacuna a ser contornada. Não recorra a reflexão para
criar grupos e não edite manualmente um arquivo .mixer — a estrutura do mixer não é seguramente
editável às cegas.
Passo 0: Confirme que você pode executar C# no Editor
Cada passo C# abaixo é executado dentro de um Editor ao vivo por meio da CLI do Unity. A skill unity-cli
é responsável por te levar até lá — instalar a CLI, confirmar um Editor conectado, adicionar o
pacote com.unity.pipeline do projeto, distinguir um Editor genuinamente ausente de um travado
no Modo de Segurança e descobrir o catálogo de comandos do Editor. Siga-a primeiro; não
derive nada disso aqui.
Duas coisas que ela não pode saber por você:
- Você precisa especificamente de
eval, não apenas de um Editor acessível. Confirme que ele aparece no catálogo. Sua presença depende da versão do pacote Pipeline, não da CLI, portanto uma instalação saudável ainda pode não tê-lo — se estiver faltando, informe e pare. - Não recorra a editar arquivos
.mixermanualmente. Roteamento de mixer não é seguramente editável às cegas, portanto um Editor inacessível é uma parada, não um sinal para improvisar.
Uma vez que eval esteja disponível, é assim que cada passo C# abaixo é executado.
Execute C# através do Editor conectado com o comando eval. Descubra sua forma de parâmetro
a partir de unity command --format json em vez de assumir uma — a forma inline é
unity command eval --code '<snippet>', e algumas versões do Pipeline também registram
eval_file para executar um snippet a partir de um arquivo. Verifique o catálogo antes de usar
eval_file; ele frequentemente está ausente. unity command tem como padrão um tempo limite de 30 segundos.
Passando C# para eval
eval compila um bloco de instruções, não um arquivo. Duas consequências, ambas causando um
erro de compilação em vez de um aviso:
- Sem diretivas
using. O compilador lêusing UnityEngine;como uma instrução de descarte de recurso e a rejeita (CS0210). - Os tipos devem ser totalmente qualificados. Um
AssetDatabaseouVolumesimples não resolve (CS0246/CS0103), e umObjectsimples é ambíguo comobject(CS0104).
Onde um snippet abaixo é escrito como um arquivo — com usings, por legibilidade, ou porque se destina
a ser salvo no projeto — qualifique os tipos antes de passá-lo para eval.
Passo 1: Pré-verificação
Se o usuário não pediu explicitamente por Mixers de Áudio, confirme se ele deseja prosseguir com a configuração.
Em seguida, inventarie o que já existe com o snippet de inventário de mixer em references/api.md, executado através do Editor conforme descrito no Passo 0. Isso fornece cada mixer no projeto e os nomes dos grupos em cada um.
Ele retorna uma lista plana de grupos, não a árvore pai/filho. Isso é suficiente para rotear, e é tudo que a API pública expõe. Se a hierarquia for importante para a conversa, peça ao usuário para olhar a janela Audio Mixer e descrevê-la — não recorra à API de árvore não pública para descobrir.
Se o projeto não tiver nenhum mixer, informe e pare em vez de improvisar um: criar um mixer não tem API pública. Peça ao usuário para criar um (Window → Audio → Audio Mixer, depois no + ao lado de Mixers) e retome daqui quando ele existir.
Passo 2: Encontre referências da cena
Encontre todos os componentes Audio Source, observe os nomes dos Assets de Gerador atribuídos e generalize uma classe ou categoria adequada do nome do som, idealmente algo já existente. Exemplos para nomes de Assets de Clip de Áudio:
- "FootStep4_Sound" -> Foley
- "Dialogue_Female_Scene4" -> Voz/Voice/Dialogue
- "GunShot" -> SFX
- "Menu_Theme_Variation" -> Música
Se o asset atribuído não for descritivo ou não existir, tente olhar para o nome do GameObject ou possíveis nomes de MonoBehaviour adjacentes. Peça para criar um grupo Não Categorizado se parecer difícil ou se a confiança for baixa em classificar como uma Fonte de Áudio está sendo usada.
Passo 3: Concordem a lista de grupos e crie quaisquer grupos faltantes
Apresente a classificação do Passo 2 como um roteamento proposto — cada Fonte de Áudio e o grupo para o qual você pretende enviá-la — e revise com o usuário.
AGUARDE a resposta do usuário antes de prosseguir.
Prefira um grupo existente quando ele realmente cobrir a categoria, mesmo que você o tivesse nomeado de forma
diferente. Mas não colapse categorias que um engenheiro de mixagem manteria separadas — Foley é um
subconjunto de SFX, não outra palavra para o mesmo, então um tiro não pertence a um grupo Foley só porque
um existe. Quando os grupos existentes cobrem apenas parcialmente suas categorias, diga quais se encaixam e quais
precisam de um novo grupo, e deixe o usuário decidir.
Para categorias sem grupo correspondente, você não pode criar o grupo — não há API pública para isso. Entregue precisamente, nomeando o mixer e os nomes exatos dos grupos, conforme mostrado no final de references/api.md. Em seguida, re-execute o snippet de inventário para confirmar que os grupos existem e verificar sua ortografia antes de rotear. Não presuma que o usuário fez isso e não presuma que ele soletrou como você pediu.
Passo 4: Roteie as Fontes de Áudio
Com a lista de grupos definida e confirmada presente, atribua o grupo de saída de cada Fonte de Áudio usando o snippet de roteamento em references/api.md. É API pública em toda parte e envolve toda a passagem em uma única etapa de desfazer, para que o usuário possa reverter tudo de uma vez.
Chaveie o mapeamento pelo identificador que você classificou. O Passo 2 lê primeiro o nome do asset do clipe e só recorre ao nome do GameObject, portanto o mapeamento aceita qualquer um — os dois são identificadores diferentes e chavear pelo errado descarta fontes.
Três coisas para relatar em vez de assumir:
- Quaisquer entradas
NO SUCH GROUPque o snippet retornar. Isso significa que um grupo que você esperava não está no mixer — geralmente uma diferença de ortografia. Resolva com o usuário, não pule silenciosamente a fonte. - Quaisquer entradas
NOT IN THE MAPPING. Essas são Fontes de Áudio que sua classificação perdeu. Relatar um roteamento bem-sucedido enquanto fontes foram silenciosamente deixadas sem roteamento é o pior resultado aqui, porque parece sucesso. - A cena foi modificada, não o asset do mixer. O roteamento vive na Fonte de Áudio, portanto só persiste quando a cena é salva. Informe o usuário e salve apenas com sua concordância.
Volume, efeitos e reorganização de pais estão fora do escopo. Eles vivem em API não pública. Se o usuário pedir por eles, diga que o roteamento está feito e aponte para a janela Audio Mixer para a mixagem em si.
Referências
Veja references/api.md