Collega un HUD di AI Studio agli Eventi di Salute con Unity MCP
Dopo che AI Studio esporta un prefab HUD Unity, usa Cursor + Unity MCP per sottoscrivere eventi di salute, aggiornare barra e testo danni, con checklist Play-mode e fix comuni.
- Unity MCP
- AI Studio
- HUD
- Unity
- Cursor
- AI game development
- tutorial
L’HUD è in Unity, la barra sembra a posto, ma il combattimento non la muove—di solito il prefab è ok e UI e gameplay non condividono gli stessi eventi di salute. Il design ha già esportato l’HUD principale come Canvas / Prefab da VberAI Studio. Il gameplay dovrebbe usare Unity MCP nel progetto aperto per connettere i cambiamenti di PlayerHealth a uno Slider / Image.fillAmount, poi verificare in Play mode.
Questo post copre solo quel collegamento—non l’esportazione Figma o l’installazione di MCP.
| Passo | Strumento | Output |
|---|---|---|
| Struttura HUD nel motore | AI Studio | Prefab HUD con nomi stabili |
| Allega script, collega riferimenti, modifica scena | Cursor (o Claude Code) + Unity MCP | PlayerHealth ↔ HudHealthView |
| Accetta | Unity Play | La lunghezza della barra cambia su danno / cura |
Correlati:
Concorda i nomi prima della rifinitura
Dopo l’esportazione AI Studio, il codice deve trovare la barra tramite percorso o riferimenti serializzati. Prima dell’esportazione (o subito dopo l’importazione), mantieni nomi stabili:
| Ruolo | Nome suggerito | Note |
|---|---|---|
| Radice HUD | HUD_Root | Unico nella scena |
| Riempimento salute | HUD_HealthFill | Image (Filled) o sotto Slider.fillRect |
| Testo valore opzionale | HUD_HealthText | TextMeshProUGUI, es. 80/100 |
| Flash danno opzionale | HUD_DamageFlash | Schermo intero o bordo Image, trasparente di default |
Evita default di design come Rectangle 42 o Group 3—sia MCP che script scritti a mano erediteranno il caos.
Passo 1: Conferma che l’HUD sia nella scena
- Apri la scena del giocatore (es.
Game) - La gerarchia dovrebbe mostrare
HUD_Root(o equivalente) con un’Image salute / Slider sotto - Render Mode Canvas e configurazione camera corretti (Screen Space - Overlay è il più semplice)
Test fumo read-only tramite MCP (non modificare la scena):
Elenca i GameObject nella scena attiva i cui nomi contengono HUD, e i tipi di componenti UI su di essi. Non modificare nulla.
Se la lista è vuota: riesporta/sincronizza da AI Studio, o controlla che il Prefab sia stato trascinato nella scena sbagliata.
Passo 2: Il gameplay espone i cambiamenti di salute—mai trovare la UI
Mantieni la salute sul giocatore e trasmetti con un evento C# (o UnityEvent). L’HUD si sottoscrive solo; non deve guidare la logica tramite Find("Player").
Chiedi a Unity MCP da Cursor (i percorsi possono corrispondere al tuo progetto):
Crea Assets/Scripts/Combat/PlayerHealth.cs:
- maxHealth, currentHealth (float)
- evento Action<float,float> OnHealthChanged(current, max)
- TakeDamage(float), Heal(float); clamp a 0..max
- Se current<=0 dopo il danno, invoca OnHealthChanged di nuovo e opzionalmente OnDied
- Allega al Player nella scena; trasmetti una volta in Start
Non modificare alcun nodo HUD.
Implementazione di riferimento (genera, poi rivedi):
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);
}
}
Tasto danno temporaneo per il collegamento (elimina dopo):
Aggiungi DebugDealDamage.cs temporaneo su Player: premendo H infligge 10 danni a PlayerHealth sullo stesso oggetto. Solo per accettazione collegamento.
Passo 3: La vista HUD ascolta e aggiorna la barra
Aggiungi uno script vista con riferimenti serializzati. Non usare GameObject.Find ogni frame in Update.
Crea Assets/Scripts/UI/HudHealthView.cs:
- Serialize Image healthFill (Filled, Horizontal)
- Opzionale TMP_Text healthText
- Serialize PlayerHealth playerHealth (o risolvi l'unico PlayerHealth in Awake)
- OnEnable sottoscrivi OnHealthChanged; OnDisable annulla sottoscrizione
- Nel callback: healthFill.fillAmount = current/max; testo $"{current:0}/{max:0}"
- Allega a HUD_Root; assegna l'Image HUD_HealthFill a healthFill
- Assegna il PlayerHealth del Player a playerHealth
Riferimento:
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 ti sottoscrivi dopo Start, tira una volta; qui ci affidiamo a 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 l’Image non è Filled: fai impostare a MCP Image Type = Filled, Fill Method = Horizontal, poi collega fillAmount. Con uno Slider, scrivi slider.value = t (minValue=0, maxValue=1)—stesso schema.
Passo 4: Lascia che Unity MCP riempia i riferimenti serializzati
Dopo la compilazione, sii esplicito in Cursor:
Nella scena attiva:
1. Conferma che Player ha PlayerHealth; HUD_Root ha HudHealthView
2. Punta HudHealthView.healthFill all'Image chiamata HUD_HealthFill
3. Punta HudHealthView.playerHealth al PlayerHealth del Player
4. Se HUD_HealthText esiste, assegna il TMP_Text
5. Salva la scena
Poi elenca eventuali campi serializzati rimasti None su quei due componenti.
Controllo read-only:
Ispeziona i riferimenti HudHealthView e PlayerHealth: script mancanti o campi None? Riporta solo—non modificare la scena.
Passo 5: Checklist di accettazione Play
Entra in Play e spunta tutti questi prima di dichiarare il collegamento completato:
- All’ingresso: barra piena (o corrispondente a
current/max), non vuota/obsoleta - Premi H (o colpisci il player):
fillAmountscende; testo aggiornato se presente - Danno a 0: barra vuota; stato morte stabile; HUD non sfarfalla
- Cura: barra sale (tasto temporaneo o pickup)
- Esci da Play e rientra: riferimenti ancora validi; nessuno script mancante
Prompt di accettazione:
Sto accettando il collegamento HUD in Play mode. Se la Console mostra NullReferenceException, di' se è PlayerHealth o HudHealthView e quale campo serializzato è None. Diagnostica prima, proponi la correzione minima, attendi il mio OK prima di modificare.
Punti di rottura comuni
| Sintomo | Controlla prima |
|---|---|
| La barra non si muove mai in Play | OnHealthChanged non sottoscritto; o il danno non colpisce mai TakeDamage |
| NRE all’ingresso in Play | healthFill / playerHealth ancora None |
| Barra invertita o salti | Image non Filled; Rect sbagliato usato come riempimento |
| Testo bloccato | TMP sbagliato; errori font asset mancanti sul componente |
| AI modifica oggetti sbagliati | Prompt: “Tocca solo HUD_Root / Player; non spostare la geometria del livello” |
Regola: il gameplay cambia la salute; la UI ascolta solo. Non usare Find("HUD_HealthFill") dentro PlayerCombat—la prossima riesportazione AI Studio con rinomina romperà anche il combattimento.
Convivenza con le riesportazioni HUD
Quando il design riesporta da AI Studio:
- Mantieni i nomi
HUD_HealthFill/HUD_Rootquando possibile - Dopo la reimportazione, esegui solo i controlli riferimenti del passo 4—non lasciare che MCP riscriva
PlayerHealth - Mantieni lo script vista nel progetto; ricollega se i riferimenti della variante Prefab sono stati cancellati
Prompt di confine in una riga:
Questa passata risolve solo riferimenti Prefab UI persi. Non cambiare alcuno script gameplay sotto Assets/Scripts/Combat.
Riepilogo
- AI Studio consegna la struttura HUD in Unity
PlayerHealthtrasmette(current, max)HudHealthViewsi sottoscrive e aggiornafillAmount/ testo- Unity MCP allega componenti, riempie riferimenti serializzati, applica fix Console minimi
- Accetta con un tasto danno + checklist Play—non “script generato con successo”
Questo chiude un ciclo ripetibile: UI nel motore → collegamento eventi → accettazione Play. Borse, barre mana e barre boss possono copiare lo stesso schema.
Continua a leggere
Altre guide che potrebbero interessarti
Cos'è Cocos Creator MCP? Capacità vs "Cocos Creator AI"
Cosa è VberAI Cocos Creator MCP: collega client Cursor all'editor aperto per lavorare con scene, nodi e componenti—e come differisce dal vago "Cocos Creator AI", AI Studio e assistenti solo codice.
- cocos
- cocos-creator
- mcp
- cocos-mcp
Traduzione con un clic VberAI: solo testo UI / Figma / PSD, layout invariato
VberAI Studio traduce mockup UI e livelli di testo Figma/PSD: solo testo, layout, design, struttura e gerarchia invariati.
- vberai
- ai-studio
- ui-translate
- ui-translation
Come generare fotogrammi di sequenze di gioco e trailer con l'IA, e poi spedirli a Unity / Godot / Cocos
VberAI Studio genera fotogrammi di sequenze di gioco e CG promo/storia da testo, immagine o primo-ultimo fotogramma; ritaglia e dividi sulla tela, poi consegna a Unity, Godot e Cocos. Include una guida, una checklist di accettazione e perché non sostituisce Timeline / Sequencer.
- ai-studio
- game-video
- sequence-frames
- sprite-frames