Communitygithub.com

unity-motion-match

Descobre e vincula automaticamente uGUI do Unity existente em hierarquias de cena e runtime, extrai modelos de UI e combina movimentos de referência repetidamente sem um adaptador específico do projeto. Preserva layout e conexões serializadas; relata UI não suportada e comportamento de jogo não verificado. Inclui perfis de jogo legados opcionais.

O que é unity-motion-match?

A skill Unity Motion Match permite substituir movimentos de referência em interfaces uGUI existentes, aplicando transformações como translação, escala uniforme e opacidade com uma câmera fixa. O processo é realizado em uma cópia isolada do projeto, utilizando uma ponte comum do Editor e dados de vinculação gerados automaticamente, sem a necessidade de adaptadores C# específicos do jogo. A skill suporta as plataformas Unity e Python (com numpy, scipy, opencv-python e Pillow) e oferece comandos como `prepare` para descoberta e extração de templates, `match` para combinar movimentos com base em vídeos de referência, e `audit` para validação de baseline. Ela preserva layout, referências serializadas e conexões de eventos, mas não verifica comportamentos específicos do jogo. O usuário pode inspecionar relatórios HTML e JSON gerados, e perfis legais opcionais (`--profile trash-dash`, `--profile survivors-kit`) estão disponíveis para testes de interação com jogos conhecidos.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Unity motion match

Use para substituição de movimentos de referência em uGUI existente: translação, escala uniforme e opacidade com câmera fixa. Trabalhe em uma cópia isolada do projeto. O caminho padrão auto usa uma ponte comum do Editor e dados de vinculação gerados, não adaptadores C# específicos do jogo ou métodos privados do jogo.

Descobrir e preparar

Leia vinculação automática para seleção, saídas e limites, e escopo de validação para comportamento testado e erros visuais restantes. Para o modelo de composição, artigos originais e um benchmark de movimento reproduzível, leia método e evidências. A fonte deve compilar com o Editor Unity selecionado e conter uGUI. Python precisa de numpy, scipy, opencv-python e Pillow; ffmpeg é necessário apenas para entrada de vídeo.

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

Isso copia Assets/Packages/ProjectSettings sem a Library, inventaria a estrutura de cena Canvas/RectTransform/layout/componente, escolhe uma cena de inicialização, entra no Modo Play normal, descobre a UI resultante, seleciona grupos independentes visíveis e extrai templates de fundo/rest/RGBA. Lançamentos repetidos estabelecem uma linha de base pós-importação estável. Nenhuma cena é salva e a fonte não é editada.

Inspecione selection.html, auto-report.json, auto-bindings.json e as imagens rest.png extraídas. A seleção automática é uma sugestão estrutural, não conhecimento de qual UI o usuário pretendia animar. Use --scene, --canvas ou seletores de dados --target repetidos quando a tarefa especificar uma tela/grupo. Eles não precisam de código adaptador. Nomes duplicados exigem um ID de vinculação de inventário ou um caminho único.

Apenas para inventário, use scan com os mesmos argumentos de origem/espaço de trabalho. Para uma prévia de cena serializada sem inicialização do jogo, escolha explicitamente --execution edit; rotule como prévia, não verificação de tempo de execução. Não substitua silenciosamente uma prévia de edição quando a inicialização do Modo Play falhar.

O Unity nativo pode exigir o caminho de execução aprovado do host para licenciamento. Use autorização existente para a cópia isolada. Em caso de falha no lançamento, inspecione o log; não repita ou repare código de jogo não relacionado silenciosamente. Um espaço de trabalho preparado é um instantâneo: após alterar a UI de origem, crie um novo espaço de trabalho.

Combinar e capturar

Coloque as gravações sob REFERENCE_ROOT/CASE-REVISION/, usando IDs de caso em workspace.json, por exemplo c_abcd1234-r1/reference.mp4. A captura usa clipes de dois segundos a 30fps, terminando na pose de descanso original.

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

O comando estima o movimento a partir de pixels, escreve solutions/REVISION, amostra AnimationClips nativos em objetos existentes vinculados, captura a saída do Unity e verifica a preservação. Novas gravações sempre exigem reextração. Para a mesma gravação, scripts/motion.py revise ajusta velocidade, distância específica do eixo ou escalonamento; mantenha uma chave de pose de descanso em dois segundos ao editar o tempo e execute unity.py capture --workspace ... --revision ... novamente após as edições.

O ajustador de pixels usa sinais filtrados em resolução total e calibra pequenas diferenças de template/raster a partir do quadro de descanso final da referência. Inspecione *.fit.json para referenceRestCalibration. Para um gráfico de cor única com pixels opacos, flatPaintOpacity registra quantos quadros tiveram patches visíveis separados suficientes para medir a opacidade do grupo. Uma gravação que termina intencionalmente em outra pose/opacidade não é uma entrada válida para este fluxo de trabalho.

Exporta automaticamente um .anim separado relativo à raiz para cada alvo, evitando caminhos de animação ambíguos do Unity quando irmãos têm nomes idênticos. As vinculações identificam o objeto real da cena/hierarquia. Nenhum objeto wrapper, reparentalização, controles renomeados ou recabeamento de callbacks são introduzidos.

Inspecione a saída em relação à referência antes de declarar o movimento como correspondente. Passar nas verificações de layout/vinculação não é prova de similaridade visual. Pixels fracos, recorte, UI semelhante e opacidade sobreposta ainda podem exigir correção.

Para MP4s, o ajustador verifica o fundo estacionário em busca de diferenças introduzidas pela decodificação. Em gráficos de cor única elegíveis, estima a opacidade a partir do brilho compartilhado por muitos traços. Em *.fit.json, videoOpacity.measuredFrames conta quadros com evidência de vídeo utilizável antes de restStartsAt; outros quadros mantêm a estimativa anterior. Inspecione sobreposições e transições abruptas na reprodução. Um limite de pior quadro numérico requer valores de opacidade de referência conhecidos.

O que as verificações estabelecem

Auto compara âncoras/pivôs/tamanhos/configuração de layout, referências de objeto serializadas e vinculações de eventos persistentes, pose final, destinos de raycast de botões quando disponíveis e restauração em dois tamanhos de viewport. Não invoca botões desconhecidos nem infere se compras, autenticação, navegação ou outros resultados específicos do jogo estão corretos. gameSpecificSemanticsVerified permanece falso.

Execute unity.py audit --workspace ... para a linha de base do ativo/configuração. Mantenha os custos de descoberta, preparação e substituição separados. O benchmark de perfil manual anterior não estabelece desempenho para descoberta automática.

Opcional --profile trash-dash e --profile survivors-kit mantêm testes de interação de jogos conhecidos anteriores. Leia perfis legados apenas quando esses testes semânticos forem úteis; eles não são necessários para outros projetos uGUI.

Habilidades Relacionadas