Ein AI-Studio-HUD mit Unity MCP an Gesundheitsereignisse anbinden
Nachdem AI Studio ein Unity-HUD-Prefab exportiert hat, mit Cursor + Unity MCP Gesundheitsereignisse abonnieren, Balken und Schadenstext aktualisieren, mit Play-Modus-Checkliste und häufigen Fixes.
- Unity MCP
- AI Studio
- HUD
- Unity
- Cursor
- AI game development
- tutorial
Titel
Ein AI-Studio-HUD mit Unity MCP an Gesundheitsereignisse anbinden
Beschreibung
Nachdem AI Studio ein Unity-HUD-Prefab exportiert hat, mit Cursor + Unity MCP Gesundheitsereignisse abonnieren, Balken und Schadenstext aktualisieren, mit Play-Modus-Checkliste und häufigen Fixes.
Einleitung
Das HUD ist in Unity, der Balken sieht gut aus, aber der Kampf bewegt ihn nicht – normalerweise ist das Prefab in Ordnung und UI und Gameplay teilen sich nicht dieselben Gesundheitsereignisse. Design hat das Haupt-HUD bereits als Canvas / Prefab aus VberAI Studio exportiert. Gameplay sollte Unity MCP im offenen Projekt verwenden, um PlayerHealth-Änderungen mit einem Slider / Image.fillAmount zu verbinden, und dann im Play-Modus verifizieren.
Dieser Beitrag behandelt nur diese Verdrahtung – nicht den Figma-Export oder die MCP-Installation.
| Schritt | Werkzeug | Ausgabe |
|---|---|---|
| HUD-Struktur in die Engine | AI Studio | HUD-Prefab mit stabilen Namen |
| Skripte anhängen, Referenzen binden, Szene bearbeiten | Cursor (oder Claude Code) + Unity MCP | PlayerHealth ↔ HudHealthView |
| Abnahme | Unity Play | Balkenlänge ändert sich bei Schaden / Heilung |
Verwandte Artikel:
Namen vor dem Feinschliff festlegen
Nach dem AI-Studio-Export muss der Code den Balken über Pfad oder serialisierte Referenzen finden. Vor dem Export (oder direkt nach dem Import) sollten die Namen stabil bleiben:
| Rolle | Vorgeschlagener Name | Hinweise |
|---|---|---|
| HUD-Wurzel | HUD_Root | Eindeutig in der Szene |
| Gesundheitsfüllung | HUD_HealthFill | Image (Filled) oder unter Slider.fillRect |
| Optionaler Wertetext | HUD_HealthText | TextMeshProUGUI, z. B. 80/100 |
| Optionaler Schadensblitz | HUD_DamageFlash | Vollbild- oder Rand-Image, standardmäßig transparent |
Vermeiden Sie Design-Standardnamen wie Rectangle 42 oder Group 3 – sowohl MCP als auch handgeschriebene Skripte erben das Chaos.
Schritt 1: Bestätigen, dass das HUD in der Szene ist
- Öffnen Sie die Spielerszene (z. B.
Game) - Die Hierarchie sollte
HUD_Root(oder Ihr Äquivalent) mit einem Gesundheits-Image / Slider darunter zeigen - Canvas-Render-Modus und Kamera-Setup sind korrekt (Screen Space - Overlay ist am einfachsten)
Nur-Lese-Smoke-Test über MCP (Szene nicht bearbeiten):
Listen Sie GameObjects in der aktiven Szene auf, deren Namen HUD enthalten, sowie die UI-Komponententypen darauf. Ändern Sie nichts.
Wenn die Liste leer ist: Erneut aus AI Studio exportieren/synchronisieren oder prüfen, ob das Prefab in die falsche Szene eingefügt wurde.
Schritt 2: Gameplay macht Gesundheitsänderungen sichtbar – niemals die UI finden
Gesundheit beim Spieler behalten und mit einem C#-Event (oder UnityEvent) senden. Das HUD abonniert nur; es darf keine Logik über Find("Player") steuern.
Bitten Sie Unity MCP von Cursor aus (Pfade können zu Ihrem Projekt passen):
Erstellen Sie Assets/Scripts/Combat/PlayerHealth.cs:
- maxHealth, currentHealth (float)
- event Action<float,float> OnHealthChanged(current, max)
- TakeDamage(float), Heal(float); auf 0..max begrenzen
- Wenn current<=0 nach Schaden, OnHealthChanged erneut auslösen und optional OnDied
- An das Player-Objekt in der Szene anhängen; einmal in Start senden
Ändern Sie keine HUD-Knoten.
Referenzimplementierung (generieren, dann überprüfen):
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);
}
}
Temporäre Schadentaste für die Verdrahtung (später löschen):
Fügen Sie temporäres DebugDealDamage.cs auf Player hinzu: Drücken von H fügt PlayerHealth auf demselben Objekt 10 Schaden zu. Nur für die Verdrahtungsabnahme.
Schritt 3: HUD-Ansicht hört nur zu und aktualisiert den Balken
Fügen Sie ein Ansichtsskript mit serialisierten Referenzen hinzu. Verwenden Sie nicht GameObject.Find in jedem Frame in Update.
Erstellen Sie Assets/Scripts/UI/HudHealthView.cs:
- Serialize Image healthFill (Filled, Horizontal)
- Optional TMP_Text healthText
- Serialize PlayerHealth playerHealth (oder das eindeutige PlayerHealth bei Awake auflösen)
- OnEnable OnHealthChanged abonnieren; OnDisable abbestellen
- Im Callback: healthFill.fillAmount = current/max; Text $"{current:0}/{max:0}"
- An HUD_Root anhängen; HUD_HealthFill Image an healthFill zuweisen
- Player's PlayerHealth an playerHealth zuweisen
Referenz:
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;
// Wenn Sie nach Start abonnieren, einmal abrufen; hier verlassen wir uns auf 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)}";
}
}
Wenn das Image nicht Filled ist: MCP anweisen, Image Type = Filled, Fill Method = Horizontal zu setzen, dann fillAmount binden. Bei einem Slider schreiben Sie slider.value = t (minValue=0, maxValue=1) – gleiches Muster.
Schritt 4: Unity MCP serialisierte Referenzen füllen lassen
Nach dem Kompilieren in Cursor explizit angeben:
In der aktiven Szene:
1. Bestätigen, dass Player PlayerHealth hat; HUD_Root hat HudHealthView
2. HudHealthView.healthFill auf das Image namens HUD_HealthFill zeigen lassen
3. HudHealthView.playerHealth auf Player's PlayerHealth zeigen lassen
4. Wenn HUD_HealthText existiert, das TMP_Text zuweisen
5. Szene speichern
Dann alle verbleibenden None-serialisierten Felder auf diesen beiden Komponenten auflisten.
Nur-Lese-Prüfung:
HudHealthView- und PlayerHealth-Referenzen überprüfen: fehlende Skripte oder None-Felder? Nur Bericht – Szene nicht bearbeiten.
Schritt 5: Play-Abnahme-Checkliste
Play starten und alle Punkte abhaken, bevor die Verdrahtung als erledigt gilt:
- Beim Start: Balken ist voll (oder entspricht
current/max), nicht leer/veraltet - H drücken (oder Spieler treffen):
fillAmountsinkt; Text aktualisiert sich, falls vorhanden - Schaden auf 0: Balken leer; Todeszustand stabil; HUD flackert nicht
- Heilung: Balken steigt (temporäre Taste oder Pickup)
- Play beenden und neu starten: Referenzen noch gültig; kein Missing Script
Abnahmeprompt:
Ich nehme die HUD-Verdrahtung im Play-Modus ab. Wenn die Konsole NullReferenceException zeigt, sagen Sie, ob es PlayerHealth oder HudHealthView betrifft und welches serialisierte Feld None ist. Diagnostizieren Sie zuerst, schlagen Sie den minimalen Fix vor, warten Sie auf mein OK, bevor Sie bearbeiten.
Häufige Bruchstellen
| Symptom | Zuerst prüfen |
|---|---|
| Balken bewegt sich im Play nie | OnHealthChanged nicht abonniert; oder Schaden erreicht TakeDamage nie |
| NRE beim Play-Start | healthFill / playerHealth noch None |
| Balken invertiert oder springt | Image nicht Filled; falsches Rect als Füllung verwendet |
| Text bleibt stehen | Falsches TMP; fehlende Font-Asset-Fehler auf der Komponente |
| KI bearbeitet falsche Objekte | Prompt: „Nur HUD_Root / Player anfassen; Level-Geometrie nicht bewegen“ |
Regel: Gameplay ändert Gesundheit; UI hört nur zu. Verwenden Sie nicht Find("HUD_HealthFill") in PlayerCombat – die nächste AI-Studio-Re-Export-Umbenennung würde auch den Kampf brechen.
Umgang mit HUD-Re-Exporten
Wenn Design aus AI Studio erneut exportiert:
- Behalten Sie
HUD_HealthFill/HUD_Root-Namen wenn möglich - Nach dem Re-Import nur Schritt-4-Referenzprüfungen erneut ausführen – nicht MCP
PlayerHealthumschreiben lassen - Ansichtsskript im Projekt behalten; bei Bedarf neu binden, wenn Prefab-Varianten-Referenzen gelöscht wurden
Einzeiliger Abgrenzungsprompt:
Dieser Durchgang behebt nur verlorene UI-Prefab-Referenzen. Ändern Sie keine Gameplay-Skripte unter Assets/Scripts/Combat.
Zusammenfassung
- AI Studio liefert HUD-Struktur in Unity
PlayerHealthsendet(current, max)HudHealthViewabonniert und aktualisiertfillAmount/ Text- Unity MCP hängt Komponenten an, füllt serialisierte Referenzen, wendet minimale Konsolen-Fixes an
- Abnahme mit Schadentaste + Play-Checkliste – nicht „Skript erfolgreich generiert“
Das schließt eine wiederholbare Schleife: UI in Engine → Event-Verdrahtung → Play-Abnahme. Beutel-, Mana- und Boss-Balken können dasselbe Muster kopieren.
Weiterlesen
Weitere Guides, die Sie interessieren könnten
Schwebende Schadenszahlen: Übergabe-Abnahme und Engine-Implementierung
Fehlerkriterien bei verschwommenen Popups, fehlenden Glyphen, falscher Sortierung oder Ruckeln; TMP vs. Bitmap-Ziffern, Pools und Canvas-Reihenfolge, Unity-UGUI-Abnahmeschritte und Design-Ziffern-Art.
- game-ui-design
- game-dev-ai
- ui-to-engine
- bitmap-font
Mobile HUD-Informationshierarchie: Was im Kampf, in der Lobby und in Modals angezeigt werden sollte
HUD-Sichtbarkeit und -Priorität je Spielzustand; Bezug zu Safe Area, Floating-Text-Ebenen und Modal-Stacking – Spezifikationstabellen plus Play- und Geräte-Abnahmeschritte.
- game-ui-design
- game-dev-ai
- ui-to-engine
- hud
AI-Bildgenerierung: VberAI liefert als Erster GPT Image 2.5 – Spielgrafik bearbeiten, aufteilen und in die Engine senden
VberAI Studio ist das erste mit GPT Image 2.5 (auch GPT Image 2, Nano Banana 2 / Pro, Wan 2.7 u. v. m.). Text-to-Image, Image-to-Image und Presets bleiben auf der Spiel-Canvas zum Bearbeiten, Aufteilen und Exportieren nach Unity / Godot / Cocos.
- vberai
- ai-studio
- image-gen
- text-to-image