Conecte um HUD do AI Studio a Eventos de Saúde com Unity MCP
Após o AI Studio exportar um prefab de HUD para Unity, use Cursor + Unity MCP para assinar eventos de saúde, atualizar a barra e o texto de dano, com checklist de Play e correções comuns.
- Unity MCP
- AI Studio
- HUD
- Unity
- Cursor
- AI game development
- tutorial
Título
Conecte um HUD do AI Studio a Eventos de Saúde com Unity MCP
Descrição
Após o AI Studio exportar um prefab de HUD para Unity, use Cursor + Unity MCP para assinar eventos de saúde, atualizar a barra e o texto de dano, com checklist de Play e correções comuns.
Corpo (Markdown, sem frontmatter)
O HUD está no Unity, a barra parece correta, mas o combate não a move—geralmente o prefab está correto e UI e gameplay não compartilham os mesmos eventos de saúde. O Design já exportou o HUD principal como Canvas / Prefab do VberAI Studio. O Gameplay deve usar Unity MCP no projeto aberto para conectar mudanças de PlayerHealth a um Slider / Image.fillAmount, e então verificar no modo Play.
Este post cobre apenas essa conexão—não a exportação do Figma ou a instalação do MCP.
| Etapa | Ferramenta | Saída |
|---|---|---|
| Estrutura do HUD no motor | AI Studio | Prefab de HUD com nomes estáveis |
| Anexar scripts, vincular referências, editar cena | Cursor (ou Claude Code) + Unity MCP | PlayerHealth ↔ HudHealthView |
| Aceitar | Unity Play | Comprimento da barra muda ao dano / cura |
Relacionados:
Combine os nomes antes do polimento
Após a exportação do AI Studio, o código deve encontrar a barra via caminho ou referências serializadas. Antes de exportar (ou logo após importar), mantenha os nomes estáveis:
| Papel | Nome sugerido | Notas |
|---|---|---|
| Raiz do HUD | HUD_Root | Único na cena |
| Preenchimento de saúde | HUD_HealthFill | Image (Filled) ou sob Slider.fillRect |
| Texto de valor opcional | HUD_HealthText | TextMeshProUGUI, ex.: 80/100 |
| Flash de dano opcional | HUD_DamageFlash | Image em tela cheia ou borda, transparente por padrão |
Evite padrões de design como Rectangle 42 ou Group 3—tanto o MCP quanto scripts escritos à mão herdarão a bagunça.
Passo 1: Confirme que o HUD está na cena
- Abra a cena do jogador (ex.:
Game) - A Hierarquia deve mostrar
HUD_Root(ou seu equivalente) com uma Image / Slider de saúde sob ele - O Canvas Render Mode e a configuração da câmera estão corretos (Screen Space - Overlay é o mais simples)
Teste de fumaça somente leitura via MCP (não edite a cena):
Liste GameObjects na cena ativa cujos nomes contenham HUD, e os tipos de componentes de UI neles. Não modifique nada.
Se a lista estiver vazia: re-exporte/sincronize do AI Studio, ou verifique se o Prefab foi solto na cena errada.
Passo 2: O gameplay expõe mudanças de saúde—nunca encontre a UI
Mantenha a saúde no jogador e transmita com um evento C# (ou UnityEvent). O HUD apenas assina; não deve dirigir a lógica via Find("Player").
Peça ao Unity MCP do Cursor (caminhos podem corresponder ao seu projeto):
Crie Assets/Scripts/Combat/PlayerHealth.cs:
- maxHealth, currentHealth (float)
- event Action<float,float> OnHealthChanged(current, max)
- TakeDamage(float), Heal(float); clamp para 0..max
- Se current<=0 após dano, dispare OnHealthChanged novamente e opcionalmente OnDied
- Anexe ao Player da cena; transmita uma vez no Start
Não modifique nenhum nó do HUD.
Implementação de referência (gere, depois revise):
using System;
using UnityEngine;
public class PlayerHealth : MonoBehaviour
{
[SerializeField] float maxHealth = 100f;
float currentHealth;
public event Action<float, float> OnHealthChanged;
public event Action OnDied;
void Awake() => currentHealth = maxHealth;
void Start() => OnHealthChanged?.Invoke(currentHealth, maxHealth);
public void TakeDamage(float amount)
{
if (amount <= 0f || currentHealth <= 0f) return;
currentHealth = Mathf.Max(0f, currentHealth - amount);
OnHealthChanged?.Invoke(currentHealth, maxHealth);
if (currentHealth <= 0f) OnDied?.Invoke();
}
public void Heal(float amount)
{
if (amount <= 0f || currentHealth <= 0f) return;
currentHealth = Mathf.Min(maxHealth, currentHealth + amount);
OnHealthChanged?.Invoke(currentHealth, maxHealth);
}
}
Tecla de dano temporária para conexão (delete depois):
Adicione DebugDealDamage.cs temporário no Player: pressionar H causa 10 de dano ao PlayerHealth no mesmo objeto. Apenas para aceitação da conexão.
Passo 3: A visão do HUD apenas escuta e atualiza a barra
Adicione um script de visão com referências serializadas. Não use GameObject.Find a cada frame em Update.
Crie Assets/Scripts/UI/HudHealthView.cs:
- Serialize Image healthFill (Filled, Horizontal)
- Opcional TMP_Text healthText
- Serialize PlayerHealth playerHealth (ou resolva o PlayerHealth único no Awake)
- OnEnable assine OnHealthChanged; OnDisable cancele a assinatura
- No callback: healthFill.fillAmount = current/max; texto $"{current:0}/{max:0}"
- Anexe a HUD_Root; atribua a Image HUD_HealthFill a healthFill
- Atribua o PlayerHealth do Player a playerHealth
Referência:
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class HudHealthView : MonoBehaviour
{
[SerializeField] PlayerHealth playerHealth;
[SerializeField] Image healthFill;
[SerializeField] TMP_Text healthText;
void OnEnable()
{
if (playerHealth == null) return;
playerHealth.OnHealthChanged += HandleHealthChanged;
// Se você assinar após o Start, puxe uma vez; aqui confiamos no PlayerHealth.Start
}
void OnDisable()
{
if (playerHealth == null) return;
playerHealth.OnHealthChanged -= HandleHealthChanged;
}
void HandleHealthChanged(float current, float max)
{
float t = max > 0f ? current / max : 0f;
if (healthFill != null) healthFill.fillAmount = t;
if (healthText != null) healthText.text = $"{Mathf.CeilToInt(current)}/{Mathf.CeilToInt(max)}";
}
}
Se a Image não estiver como Filled: peça ao MCP para definir Image Type = Filled, Fill Method = Horizontal, e então vincule fillAmount. Com um Slider, escreva slider.value = t (minValue=0, maxValue=1)—mesmo padrão.
Passo 4: Deixe o Unity MCP preencher as referências serializadas
Após compilar, seja explícito no Cursor:
Na cena ativa:
1. Confirme que o Player tem PlayerHealth; HUD_Root tem HudHealthView
2. Aponte HudHealthView.healthFill para a Image chamada HUD_HealthFill
3. Aponte HudHealthView.playerHealth para o PlayerHealth do Player
4. Se HUD_HealthText existir, atribua o TMP_Text
5. Salve a cena
Depois liste quaisquer campos serializados None restantes nesses dois componentes.
Verificação somente leitura:
Inspecione as referências de HudHealthView e PlayerHealth: há scripts ausentes ou campos None? Apenas relate—não edite a cena.
Passo 5: Checklist de aceitação no Play
Entre no Play e marque todos estes antes de considerar a conexão concluída:
- Ao entrar: a barra está cheia (ou corresponde a
current/max), não vazia/desatualizada - Pressione H (ou acerte o jogador):
fillAmountdiminui; texto atualiza se presente - Dano até 0: barra vazia; estado de morte estável; HUD não oscila
- Cura: barra sobe (tecla temporária ou item)
- Sair do Play e reentrar: referências ainda válidas; sem Missing Script
Prompt de aceitação:
Estou aceitando a conexão do HUD no modo Play. Se o Console mostrar NullReferenceException, diga se é PlayerHealth ou HudHealthView e qual campo serializado está None. Diagnostique primeiro, proponha a correção mínima, aguarde meu OK antes de editar.
Pontos de quebra comuns
| Sintoma | Verifique primeiro |
|---|---|
| Barra nunca se move no Play | OnHealthChanged não assinado; ou dano nunca chama TakeDamage |
| NRE ao entrar no Play | healthFill / playerHealth ainda None |
| Barra invertida ou saltando | Image não Filled; Rect errado usado como preenchimento |
| Texto travado | TMP errado; erros de fonte ausente no componente |
| IA edita objetos errados | Prompt: “Apenas toque em HUD_Root / Player; não mova geometria do nível” |
Regra: gameplay muda a saúde; UI apenas escuta. Não use Find("HUD_HealthFill") dentro de PlayerCombat—o próximo re-export do AI Studio com renomeação quebrará o combate também.
Convivendo com re-exports do HUD
Quando o design re-exporta do AI Studio:
- Mantenha os nomes
HUD_HealthFill/HUD_Rootquando possível - Após reimportar, apenas reexecute as verificações de referência do passo 4—não deixe o MCP reescrever
PlayerHealth - Mantenha o script de visão no projeto; re-vincule se as referências da variante do Prefab forem limpas
Prompt de limite de uma linha:
Esta passagem apenas corrige referências perdidas de UI Prefab. Não altere nenhum script de gameplay sob Assets/Scripts/Combat.
Resumo
- AI Studio entrega a estrutura do HUD no Unity
PlayerHealthtransmite(current, max)HudHealthViewassina e atualizafillAmount/ texto- Unity MCP anexa componentes, preenche referências serializadas, aplica correções mínimas no Console
- Aceite com uma tecla de dano + checklist de Play—não “script gerado com sucesso”
Isso fecha um loop repetível: UI no motor → conexão de eventos → aceitação no Play. Bolsas, barras de mana e barras de chefe podem copiar o mesmo padrão.
Continuar lendo
Mais guias que podem interessar
ChinaJoy 2026: Notas do Estande da VberAI no Hall W5
VberAI na ChinaJoy 2026 (Centro de Exposições Internacional de Xangai, Hall W5): visitantes e tomadores de decisão, brochuras esgotadas no primeiro dia, forte interesse de clientes russos, conversas com empresa coreana de ativos 3D e geração de ativos 3D para jogos no próximo mês com possível integração de pipeline.
- ChinaJoy
- VberAI
- AI Studio
- 3D assets
Hierarquia de Informações do HUD Mobile: O Que Mostrar em Combate, Lobby e Modais
Visibilidade e prioridade do HUD por estado de jogo; relação com Safe Area, camadas de texto flutuante e empilhamento de modais — tabelas de especificação e etapas de aceitação em Play e dispositivo.
- game-ui-design
- game-dev-ai
- ui-to-engine
- hud
Godot MCP vs Unity MCP vs Cocos MCP: Como Escolher em 2026
Compare Godot, Unity e Cocos Creator MCP por adequação ao motor, licenciamento, instalação e casos de uso para escolher a ponte certa.
- Godot MCP
- Unity MCP
- Cocos MCP
- MCP