Hubungkan HUD AI Studio ke Event Kesehatan dengan Unity MCP
Setelah AI Studio mengekspor prefab HUD Unity, gunakan Cursor + Unity MCP untuk berlangganan event kesehatan, memperbarui bar dan teks damage, dengan checklist Play-mode dan perbaikan umum.
- Unity MCP
- AI Studio
- HUD
- Unity
- Cursor
- AI game development
- tutorial
Judul
Wire an AI Studio HUD to Health Events with Unity MCP
Deskripsi
Setelah AI Studio mengekspor prefab HUD Unity, gunakan Cursor + Unity MCP untuk berlangganan event kesehatan, memperbarui bar dan teks damage, dengan checklist Play-mode dan perbaikan umum.
Isi
HUD sudah ada di Unity, bar terlihat bagus, tetapi combat tidak menggerakkannya—biasanya prefab sudah benar dan UI dan gameplay tidak berbagi event kesehatan yang sama. Desain sudah mengekspor HUD utama sebagai Canvas / Prefab dari VberAI Studio. Gameplay harus menggunakan Unity MCP di proyek yang terbuka untuk menghubungkan perubahan PlayerHealth ke Slider / Image.fillAmount, lalu verifikasi di mode Play.
Posting ini hanya membahas wiring tersebut—bukan ekspor Figma atau instalasi MCP.
| Langkah | Alat | Hasil |
|---|---|---|
| Struktur HUD ke dalam engine | AI Studio | Prefab HUD dengan nama yang stabil |
| Lampirkan skrip, ikat referensi, edit scene | Cursor (atau Claude Code) + Unity MCP | PlayerHealth ↔ HudHealthView |
| Terima | Unity Play | Panjang bar berubah saat damage / heal |
Terkait:
Sepakati nama sebelum poles
Setelah ekspor AI Studio, kode harus menemukan bar melalui path atau referensi serialized. Sebelum ekspor (atau tepat setelah impor), pertahankan nama yang stabil:
| Peran | Nama yang disarankan | Catatan |
|---|---|---|
| Akar HUD | HUD_Root | Unik di scene |
| Isi kesehatan | HUD_HealthFill | Image (Filled) atau di bawah Slider.fillRect |
| Teks nilai opsional | HUD_HealthText | TextMeshProUGUI, mis. 80/100 |
| Flash damage opsional | HUD_DamageFlash | Layar penuh atau Image border, transparan default |
Hindari default desain seperti Rectangle 42 atau Group 3—baik MCP maupun skrip yang ditulis tangan akan mewarisi kekacauan.
Langkah 1: Pastikan HUD ada di scene
- Buka scene pemain (mis.
Game) - Hierarchy harus menampilkan
HUD_Root(atau yang setara) dengan Image kesehatan / Slider di bawahnya - Canvas Render Mode dan pengaturan kamera sudah benar (Screen Space - Overlay paling sederhana)
Tes asap read-only melalui MCP (jangan edit scene):
List GameObjects in the active scene whose names contain HUD, and the UI component types on them. Do not modify anything.
Jika daftar kosong: ekspor ulang/sinkronkan dari AI Studio, atau periksa apakah Prefab dijatuhkan ke scene yang salah.
Langkah 2: Gameplay mengekspos perubahan kesehatan—jangan pernah Find UI
Simpan kesehatan di pemain dan siarkan dengan event C# (atau UnityEvent). HUD hanya berlangganan; tidak boleh menggerakkan logika melalui Find("Player").
Minta Unity MCP dari Cursor (path dapat disesuaikan dengan proyek Anda):
Create Assets/Scripts/Combat/PlayerHealth.cs:
- maxHealth, currentHealth (float)
- event Action<float,float> OnHealthChanged(current, max)
- TakeDamage(float), Heal(float); clamp to 0..max
- If current<=0 after damage, fire OnHealthChanged again and optionally OnDied
- Attach to the scene Player; broadcast once in Start
Do not modify any HUD nodes.
Implementasi referensi (buat, lalu tinjau):
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);
}
}
Tombol damage sementara untuk wiring (hapus nanti):
Add temporary DebugDealDamage.cs on Player: pressing H deals 10 damage to PlayerHealth on the same object. Wiring acceptance only.
Langkah 3: View HUD hanya mendengarkan dan memperbarui bar
Tambahkan skrip view dengan referensi serialized. Jangan GameObject.Find setiap frame di Update.
Create Assets/Scripts/UI/HudHealthView.cs:
- Serialize Image healthFill (Filled, Horizontal)
- Optional TMP_Text healthText
- Serialize PlayerHealth playerHealth (or resolve the unique PlayerHealth at Awake)
- OnEnable subscribe OnHealthChanged; OnDisable unsubscribe
- In the callback: healthFill.fillAmount = current/max; text $"{current:0}/{max:0}"
- Attach to HUD_Root; assign HUD_HealthFill Image to healthFill
- Assign Player's PlayerHealth to playerHealth
Referensi:
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;
// If you subscribe after Start, pull once; here we rely on 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)}";
}
}
Jika Image bukan Filled: minta MCP mengatur Image Type = Filled, Fill Method = Horizontal, lalu ikat fillAmount. Dengan Slider, tulis slider.value = t (minValue=0, maxValue=1)—pola yang sama.
Langkah 4: Biarkan Unity MCP mengisi referensi serialized
Setelah kompilasi, bersikap eksplisit di Cursor:
In the active scene:
1. Confirm Player has PlayerHealth; HUD_Root has HudHealthView
2. Point HudHealthView.healthFill at the Image named HUD_HealthFill
3. Point HudHealthView.playerHealth at Player's PlayerHealth
4. If HUD_HealthText exists, assign the TMP_Text
5. Save the scene
Then list any remaining None serialized fields on those two components.
Pemeriksaan read-only:
Inspect HudHealthView and PlayerHealth references: any missing scripts or None fields? Report only—do not edit the scene.
Langkah 5: Checklist penerimaan Play
Masuk Play dan centang semua ini sebelum menyebut wiring selesai:
- Saat masuk: bar penuh (atau cocok dengan
current/max), tidak kosong/basi - Tekan H (atau pukul pemain):
fillAmountturun; teks diperbarui jika ada - Damage hingga 0: bar kosong; status mati stabil; HUD tidak berkedip
- Heal: bar naik (tombol sementara atau pickup)
- Keluar Play dan masuk lagi: referensi masih valid; tidak ada Missing Script
Prompt penerimaan:
I am accepting HUD wiring in Play mode. If Console shows NullReferenceException, say whether it is PlayerHealth or HudHealthView and which serialized field is None. Diagnose first, propose the minimal fix, wait for my OK before editing.
Titik putus umum
| Gejala | Periksa dulu |
|---|---|
| Bar tidak pernah bergerak di Play | OnHealthChanged tidak berlangganan; atau damage tidak pernah mencapai TakeDamage |
| NRE saat masuk Play | healthFill / playerHealth masih None |
| Bar terbalik atau melompat | Image bukan Filled; Rect yang salah digunakan sebagai isi |
| Teks macet | TMP salah; kesalahan aset font hilang pada komponen |
| AI mengedit objek yang salah | Prompt: “Hanya sentuh HUD_Root / Player; jangan pindahkan geometri level” |
Aturan: gameplay mengubah kesehatan; UI hanya mendengarkan. Jangan Find("HUD_HealthFill") di dalam PlayerCombat—penggantian nama ekspor AI Studio berikutnya akan merusak combat juga.
Hidup dengan ekspor ulang HUD
Saat desain mengekspor ulang dari AI Studio:
- Pertahankan nama
HUD_HealthFill/HUD_Rootjika memungkinkan - Setelah impor ulang, hanya jalankan ulang pemeriksaan referensi langkah 4—jangan biarkan MCP menulis ulang
PlayerHealth - Simpan skrip view di proyek; ikat ulang jika referensi varian Prefab dibersihkan
Prompt batas satu baris:
This pass only fixes lost UI Prefab references. Do not change any gameplay scripts under Assets/Scripts/Combat.
- AI Studio mengirimkan struktur HUD ke Unity
PlayerHealthmenyiarkan(current, max)HudHealthViewberlangganan dan memperbaruifillAmount/ teks- Unity MCP melampirkan komponen, mengisi referensi serialized, menerapkan perbaikan Console minimal
- Terima dengan tombol damage + checklist Play—bukan “skrip berhasil dibuat”
Itu menutup loop yang dapat diulang: UI ke engine → wiring event → Play accept. Tas, bar mana, dan bar bos dapat menyalin pola yang sama.
Lanjutkan membaca
Panduan lain yang mungkin Anda suka
Unity MCP dengan Claude Code dan Cursor: Operasikan Editor Tanpa Menulis Setiap Perubahan Secara Manual
Hubungkan Claude Code, Cursor, dan Codex ke Unity melalui Model Context Protocol—pasang jembatan lokal, pratinjau perubahan, dan debug scene melampaui edit file AI.
- unity-mcp
- mcp-for-unity
- claude-unity-mcp
- unity-claude-code
Hierarki Informasi HUD Mobile: Apa yang Ditampilkan saat Combat, Lobby, dan Modal
Visibilitas dan prioritas HUD per state game; kaitannya dengan Safe Area, layer floating text, dan stacking modal—tabel spesifikasi plus langkah Play dan acceptance perangkat.
- game-ui-design
- game-dev-ai
- ui-to-engine
- hud
Panduan Audio VberAI: Suara Game, SFX, dan Musik yang Lebih Cepat Diiterasi
Buat suara game, VO monster, SFX, dan musik di VberAI Studio: formula prompt, contoh audio, studi kasus dungeon gotik, tips prompt, dan pustaka gratis.
- vberai
- ai-studio
- game-audio
- voiceover