← ब्लॉग पर वापस

Unity MCP से AI Studio HUD को हेल्थ इवेंट से जोड़ें

AI Studio से Unity HUD प्रीफ़ैब एक्सपोर्ट होने के बाद Cursor + Unity MCP से हेल्थ इवेंट सब्सक्राइब करें, HP बार और डैमेज टेक्स्ट अपडेट करें — Play मोड चेकलिस्ट और आम ब्रेक-पॉइंट फिक्स के साथ।

प्रकाशित
  • Unity MCP
  • AI Studio
  • HUD
  • Unity
  • Cursor
  • AI game development
  • tutorial

HUD Unity में है, बार ठीक दिखता है, लेकिन कॉम्बैट में नहीं हिलता — ज़्यादातर प्रीफ़ैब ठीक होता है और UI व गेमप्ले एक ही हेल्थ इवेंट शेयर नहीं करते। डिज़ाइन ने VberAI Studio से मुख्य HUD Canvas / Prefab के रूप में एक्सपोर्ट कर दिया है। गेमप्ले को खुले प्रोजेक्ट में Unity MCP से PlayerHealth बदलावों को Slider / Image.fillAmount से जोड़ना चाहिए, फिर Play मोड में जाँचें।

यह पोस्ट सिर्फ़ उस वायरिंग पर है — Figma एक्सपोर्ट या MCP इंस्टॉल दोहराई नहीं जाती।

चरणटूलआउटपुट
HUD संरचना इंजन मेंAI Studioस्थिर नामों वाला HUD Prefab
स्क्रिप्ट लगाना, रेफ़ बाइंड, सीन एडिटCursor (या Claude Code) + Unity MCPPlayerHealth ↔ HudHealthView
स्वीकृतिUnity Playडैमेज / हील पर बार लंबाई बदले

संबंधित:

पहले तय करें: पॉलिश से नाम ज़्यादा महत्वपूर्ण

AI Studio एक्सपोर्ट के बाद कोड को पथ या सीरियलाइज़्ड रेफ़ से HP बार ढूँढना होगा। एक्सपोर्ट से पहले (या इम्पोर्ट के तुरंत बाद) ये नाम स्थिर रखें:

GameObject / भूमिकासुझावित नामनोट
HUD रूटHUD_Rootसीन में अद्वितीय
HP फ़िलHUD_HealthFillImage (Filled) या Slider.fillRect के नीचे
वैकल्पिक मान टेक्स्टHUD_HealthTextTextMeshProUGUI, जैसे 80/100
वैकल्पिक डैमेज फ़्लैशHUD_DamageFlashफुल-स्क्रीन या बॉर्डर Image, डिफ़ॉल्ट पारदर्शी

बार को Rectangle 42 या Group 3 जैसे डिज़ाइन डिफ़ॉल्ट नाम मत दें — MCP और हाथ से लिखे स्क्रिप्ट दोनों प्रभावित होंगे।

चरण 1: HUD सीन में है, यह पुष्टि करें

  1. प्लेयर वाला सीन खोलें (जैसे Game)
  2. Hierarchy में HUD_Root (या आपका समकक्ष) और उसके नीचे HP Image / Slider होना चाहिए
  3. Canvas Render Mode और कैमरा सेटअप सही (Screen Space - Overlay सबसे सरल)

MCP से केवल-पढ़ने वाला स्मोक टेस्ट (सीन न बदलें):

सक्रिय सीन में जिन GameObject के नाम में HUD है उन्हें और उन पर लगे UI कंपोनेंट प्रकारों की सूची दें। कुछ भी बदलें नहीं।

सूची खाली हो तो: AI Studio से फिर एक्सपोर्ट/सिंक करें, या देखें Prefab गलत सीन में तो नहीं गया।

चरण 2: गेमप्ले सिर्फ़ «हेल्थ बदलाव» दे — UI Find मत करें

हेल्थ प्लेयर पर रखें और C# event (या UnityEvent) से ब्रॉडकास्ट करें। HUD सिर्फ़ सब्सक्राइब करे; Find("Player") से लॉजिक न बदले।

Cursor से Unity MCP को स्क्रिप्ट बनाने को कहें (पथ प्रोजेक्ट अनुसार):

Assets/Scripts/Combat/PlayerHealth.cs बनाएँ:
- maxHealth, currentHealth (float)
- इवेंट Action<float,float> OnHealthChanged(current, max)
- TakeDamage(float), Heal(float); मान 0..max में क्लैंप
- डैमेज के बाद current<=0 हो तो OnHealthChanged फिर भेजें और वैकल्पिक OnDied
- सीन के Player पर अटैच करें; Start में एक बार वर्तमान HP ब्रॉडकास्ट
कोई HUD नोड न बदलें।

संदर्भ इम्प्लीमेंटेशन (जनरेट करके समीक्षा करें):

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);
    }
}

वायरिंग के लिए अस्थायी डैमेज की (बाद में हटाएँ):

Player पर अस्थायी DebugDealDamage.cs जोड़ें: H दबाने पर उसी ऑब्जेक्ट के PlayerHealth को 10 डैमेज। सिर्फ़ वायरिंग स्वीकृति के लिए।

चरण 3: HUD व्यू सिर्फ़ सुनकर बार अपडेट करे

व्यू स्क्रिप्ट में बार के लिए सीरियलाइज़्ड रेफ़ रखें। Update में हर फ्रेम GameObject.Find न करें।

Assets/Scripts/UI/HudHealthView.cs बनाएँ:
- सीरियलाइज़ Image healthFill (Filled, Horizontal)
- वैकल्पिक TMP_Text healthText
- सीरियलाइज़ PlayerHealth playerHealth (या Awake में सीन का एकमात्र PlayerHealth ढूँढें)
- OnEnable पर OnHealthChanged सब्सक्राइब; OnDisable पर अनसब्सक्राइब
- कॉलबैक में: healthFill.fillAmount = current/max; टेक्स्ट $"{current:0}/{max:0}"
- HUD_Root पर अटैच; HUD_HealthFill Image को healthFill में असाइन
- Player के PlayerHealth को playerHealth में असाइन

संदर्भ:

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;
        // Start के बाद सब्सक्राइब हो तो एक बार पुल कर सकते हैं; यहाँ 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)}";
    }
}

Image Filled न हो: MCP से Image Type = Filled, Fill Method = Horizontal सेट कराएँ, फिर fillAmount बाइंड करें। Slider हो तो slider.value = t (minValue=0, maxValue=1) — वही पैटर्न।

चरण 4: Unity MCP सीरियलाइज़्ड रेफ़ भरे (फ़ील्ड हाथ से छूटने न दें)

कंपाइल के बाद Cursor में स्पष्ट लिखें:

सक्रिय सीन में:
1. Player पर PlayerHealth; HUD_Root पर HudHealthView पुष्टि करें
2. HudHealthView.healthFill को HUD_HealthFill नाम के Image पर पॉइंट करें
3. HudHealthView.playerHealth को Player के PlayerHealth पर पॉइंट करें
4. HUD_HealthText हो तो संबंधित TMP_Text असाइन करें
5. सीन सेव करें
फिर इन दो कंपोनेंट पर कोई None सीरियलाइज़्ड फ़ील्ड बची है सूची दें।

केवल-पढ़ने वाली जाँच:

HudHealthView और PlayerHealth रेफ़ जाँचें: missing script या None फ़ील्ड? सीन न बदलें, सिर्फ़ रिपोर्ट।

चरण 5: Play स्वीकृति चेकलिस्ट

Play में जाएँ और सब टिक करें — तभी वायरिंग पूरी:

  1. सीन में प्रवेश: बार भरा (या current/max से मेल), खाली/पुराना डेटा नहीं
  2. H (या प्लेयर पर हिट): fillAmount घटे; टेक्स्ट हो तो संख्या भी बदले
  3. 0 तक लगातार डैमेज: बार खाली; मृत्यु लॉजिक हो तो स्थिर मृत्यु स्थिति, HUD हिले नहीं
  4. Heal: बार बढ़े (अस्थायी की या पिकअप)
  5. Play से बाहर और फिर अंदर: रेफ़ बने रहें; Missing Script न आए

स्वीकृति प्रॉम्प्ट उदाहरण:

मैं Play मोड में HUD वायरिंग स्वीकार कर रहा/रही हूँ। Console में NullReferenceException हो तो बताएँ PlayerHealth है या HudHealthView, और कौन-सा सीरियलाइज़्ड फ़ील्ड None है। पहले निदान, न्यूनतम फ़िक्स प्रस्ताव, मेरी OK के बाद एडिट।

आम ब्रेक-पॉइंट (आवृत्ति के अनुसार)

लक्षणपहले देखें
Play में बार नहीं हिलताOnHealthChanged सब्सक्राइब नहीं; या डैमेज TakeDamage तक नहीं पहुँचता
Play में तुरंत NREhealthFill / playerHealth अभी None
बार उलटा या कूदताImage Filled नहीं; गलत Rect (बॉर्डर) फ़िल के रूप में
टेक्स्ट अपडेट नहींगलत TMP; फ़ॉन्ट एसेट गायब — कंपोनेंट पर एरर
AI ने गलत ऑब्जेक्ट बदलेप्रॉम्प्ट: «सिर्फ़ HUD_Root / Player छुएँ, लेवल ज्योमेट्री न हिलाएँ»

नियम: गेमप्ले HP बदले, UI सिर्फ़ सुने। PlayerCombat में Find("HUD_HealthFill") न करें — अगली AI Studio री-एक्सपोर्ट पर नाम बदलेगा तो कॉम्बैट स्क्रिप्ट भी टूटेगी।

HUD री-एक्सपोर्ट के साथ कैसे रहें

जब डिज़ाइन AI Studio से HUD बदलकर फिर एक्सपोर्ट करे:

  1. जहाँ संभव HUD_HealthFill / HUD_Root जैसे नाम रखें
  2. री-इम्पोर्ट के बाद सिर्फ़ चरण 4 रेफ़ चेक दोहराएँ — MCP से PlayerHealth फिर न लिखाएँ
  3. व्यू स्क्रिप्ट प्रोजेक्ट में रहे; Prefab वेरिएंट रेफ़ गए तो फिर बाइंड करें

सीमा एक पंक्ति प्रॉम्प्ट:

यह पास सिर्फ़ खोए UI Prefab रेफ़ ठीक करे। Assets/Scripts/Combat के तहत कोई गेमप्ले स्क्रिप्ट न बदलें।

सारांश

  1. AI Studio HUD संरचना Unity में पहुँचाता है
  2. PlayerHealth (current, max) ब्रॉडकास्ट करता है
  3. HudHealthView सब्सक्राइब करके fillAmount / टेक्स्ट अपडेट करता है
  4. Unity MCP कंपोनेंट लगाता है, सीरियलाइज़्ड रेफ़ भरता है, Console से न्यूनतम फ़िक्स
  5. स्वीकृति डैमेज की + Play चेकलिस्ट से — «स्क्रिप्ट जनरेट सफल» से नहीं

इससे दोहराने योग्य लूप बनता है: UI इंजन में → इवेंट वायरिंग → Play स्वीकृति। बैग, माना बार, बॉस बार — वही पैटर्न।

आपको ये लेख भी पसंद आ सकते हैं

गेम UI डिज़ाइन: पारंपरिक वर्कफ़्लो बनाम AI आर्ट + VberAI Studio स्प्लिट

PS/Figma हैंड स्लाइसिंग की तुलना VberAI Studio से करें: UI इम्पोर्ट या AI-जनरेट करें, लेयर ऑटो स्प्लिट करें, लेयर्ड PSD या इमेज सेट एक्सपोर्ट करें। इफ़ेक्ट, स्टेप्स और डेमो वीडियो।

  • game-ui-design
  • game-ui-designer-flow
  • ui-slicing
  • AIGC
और पढ़ें

फ्लोटिंग डैमेज नंबर: हैंडऑफ स्वीकृति और इंजन कार्यान्वयन

पॉपअप धुंधले, ग्लिफ़ गायब, गलत क्रम या रुकावट पर असफल मानदंड; TMP बनाम बिटमैप अंक, पूल और Canvas क्रम, Unity UGUI स्वीकृति चरण।

  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • bitmap-font
और पढ़ें

मोबाइल HUD सूचना पदानुक्रम: युद्ध, लॉबी और मोडल में क्या दिखाएं

गेम स्टेट के अनुसार HUD दृश्यता और प्राथमिकता; Safe Area, फ्लोटिंग टेक्स्ट लेयर और मोडल स्टैकिंग से संबंध—स्पेक टेबल व Play और डिवाइस स्वीकृति चरण।

  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • hud
और पढ़ें