एकता के लिए संवाद प्रणाली

खेलों में संवाद प्रणाली एक ऐसा तंत्र है जो खेल की दुनिया के भीतर खिलाड़ी और पात्रों के बीच इंटरैक्टिव और गहन बातचीत की अनुमति देता है। यह एक संचार चैनल के रूप में कार्य करता है जिसके माध्यम से खिलाड़ी गैर-खिलाड़ी पात्रों (एनपीसी) या अन्य संस्थाओं के साथ जुड़ सकते हैं, जो कहानी कहने, खोज की प्रगति, चरित्र विकास और विश्व-निर्माण के लिए साधन प्रदान करते हैं।

संवाद प्रणाली का प्राथमिक लक्ष्य खिलाड़ियों को विकल्प चुनने, गेम की कहानी को प्रभावित करने और इन-गेम पात्रों के साथ उनके संबंधों को आकार देने में सक्षम बनाकर एक गतिशील और आकर्षक अनुभव बनाना है। एक अच्छी तरह से डिज़ाइन की गई संवाद प्रणाली खिलाड़ी के तल्लीनता, भावनात्मक निवेश और पुन:प्लेबिलिटी को बढ़ा सकती है।

जब खेल के विकास की बात आती है Unity, तो शुरुआत से एक पूर्ण संवाद प्रणाली बनाना काफी व्यापक हो सकता है, लेकिन आरंभ करने के लिए एक सरलीकृत उदाहरण से शुरुआत करना संभव है। नीचे दिया गया उदाहरण C# और Unity UI सिस्टम का उपयोग करके एक बुनियादी पाठ-आधारित संवाद प्रणाली को कवर करेगा। याद रखें कि यह सिर्फ एक शुरुआती बिंदु है, और विशिष्ट आवश्यकताओं के आधार पर इसे विस्तारित और अनुकूलित किया जा सकता है।

डायलॉग मैनेजर बनाएं

  • एक नई स्क्रिप्ट बनाएं, उसे कॉल करें "DialogueManager", फिर उसके अंदर नीचे दिया गया कोड पेस्ट करें:
using System.Collections;
using UnityEngine;
using UnityEngine.UI;

public class DialogueManager : MonoBehaviour
{
    public Text dialogueText;
    public Button choice1Button;
    public Button choice2Button;
    public Button nextButton;

    private Dialogue currentDialogue;
    private int currentLineIndex = 0;

    void Start()
    {
        // You can load your dialogue data from an external source (e.g., JSON, XML) or create it programmatically.
        // For simplicity, we'll create a sample dialogue here.
        currentDialogue = CreateSampleDialogue();

        // Set up event listeners for buttons
        choice1Button.onClick.AddListener(OnChoice1Selected);
        choice2Button.onClick.AddListener(OnChoice2Selected);
        nextButton.onClick.AddListener(OnNextButtonClicked);

        // Start the dialogue
        StartDialogue();
    }

    private void StartDialogue()
    {
        currentLineIndex = 0;
        DisplayLine(currentDialogue.lines[currentLineIndex]);
    }

    private void DisplayLine(DialogueLine line)
    {
        dialogueText.text = line.text;
        choice1Button.gameObject.SetActive(line.hasChoice);
        choice2Button.gameObject.SetActive(line.hasChoice);
        nextButton.gameObject.SetActive(!line.hasChoice);
    }

    private void OnNextButtonClicked()
    {
        currentLineIndex++;
        if (currentLineIndex < currentDialogue.lines.Length)
        {
            DisplayLine(currentDialogue.lines[currentLineIndex]);
        }
        else
        {
            // Dialogue is over
            EndDialogue();
        }
    }

    private void OnChoice1Selected()
    {
        HandleChoice(currentDialogue.lines[currentLineIndex].choice1);
    }

    private void OnChoice2Selected()
    {
        HandleChoice(currentDialogue.lines[currentLineIndex].choice2);
    }

    private void HandleChoice(Choice choice)
    {
        // Handle the chosen choice (e.g., change variables, trigger events)
        Debug.Log("Selected Choice: " + choice.text);

        // Advance to the next line
        currentLineIndex++;
        DisplayLine(currentDialogue.lines[currentLineIndex]);
    }

    private void EndDialogue()
    {
        // Reset the dialogue UI or close the dialogue box
        Debug.Log("End of Dialogue");
    }

    // Sample dialogue data (you can replace this with loading from an external source)
    private Dialogue CreateSampleDialogue()
    {
        Dialogue dialogue = new Dialogue();

        dialogue.lines = new DialogueLine[]
        {
            new DialogueLine("Hello there! Welcome to the Unity dialogue system example.", false),
            new DialogueLine("What would you like to do?", true, new Choice("Go on an adventure"), new Choice("Stay here")),
            new DialogueLine("Great choice! Have a fantastic adventure!", false),
            new DialogueLine("That's okay. Sometimes staying in one place can be just as exciting!", false),
            new DialogueLine("Thanks for trying out the Unity dialogue system example!", false)
        };

        return dialogue;
    }
}

[System.Serializable]
public class Dialogue
{
    public DialogueLine[] lines;
}

[System.Serializable]
public class DialogueLine
{
    public string text;
    public bool hasChoice;
    public Choice choice1;
    public Choice choice2;

    public DialogueLine(string text, bool hasChoice, Choice choice1 = null, Choice choice2 = null)
    {
        this.text = text;
        this.hasChoice = hasChoice;
        this.choice1 = choice1;
        this.choice2 = choice2;
    }
}

[System.Serializable]
public class Choice
{
    public string text;

    public Choice(string text)
    {
        this.text = text;
    }
}

Unity डायलॉगमैनेजर स्क्रिप्ट के लिए यूआई टेक्स्ट और बटन ऑब्जेक्ट सेट अप करने के लिए, नीचे दिए गए चरणों का पालन करें:

  • संपादक में Unity, पदानुक्रम विंडो में राइट-क्लिक करें और "UI -> Text" एक नया यूआई टेक्स्ट ऑब्जेक्ट बनाने के लिए चयन करें।
  • यूआई टेक्स्ट ऑब्जेक्ट का नाम बदलें "DialogueText."
  • इसी तरह, तीन यूआई बटन ऑब्जेक्ट बनाएं: एक चॉइस 1 के लिए, एक चॉइस 2 के लिए, और एक "Next" बटन के लिए (संवाद को आगे बढ़ाने के लिए)।
  • बटनों को क्रमशः नाम "Choice1Button," "Choice2Button," दें "NextButton" ।
  • अपने पसंदीदा लेआउट के अनुसार यूआई टेक्स्ट और बटन को कैनवास पर रखें। हो सकता है कि आप यूआई टेक्स्ट को स्क्रीन के केंद्र में और बटनों को टेक्स्ट बॉक्स के नीचे रखना चाहें।
  • अपने गेम की दृश्य शैली में फिट होने के लिए टेक्स्ट फ़ॉन्ट, आकार, रंग और यूआई टेक्स्ट के अन्य गुणों को समायोजित करें।
  • यूआई बटनों के स्वरूप को अनुकूलित करें, जैसे कि उनके रंग और टेक्स्ट लेबल बदलना।
  • संपादक में Unity, "DialogueManager" गेमऑब्जेक्ट (जिसे आपने स्क्रिप्ट संलग्न करने के लिए बनाया था) का चयन करें।
  • इंस्पेक्टर विंडो में, आपको "Dialogue Manager" स्क्रिप्ट घटक दिखाई देगा। यूआई टेक्स्ट और बटन ऑब्जेक्ट को पदानुक्रम विंडो से स्क्रिप्ट घटक में संबंधित सार्वजनिक फ़ील्ड में खींचें और छोड़ें ।
  • इन संदर्भों को निर्दिष्ट करके, डायलॉग मैनेजर स्क्रिप्ट दृश्य में यूआई टेक्स्ट और बटन तक पहुंच सकती है, जिससे यह टेक्स्ट सामग्री को अपडेट कर सकती है और संवाद के दौरान आवश्यकतानुसार उनकी दृश्यता को नियंत्रित कर सकती है।
  • परिवर्तनशील परिवर्तनों को सहेजने के लिए दृश्य को सहेजें।

गेम चलाते समय या डायलॉग ट्रिगर्स के साथ इंटरैक्ट करते समय, डायलॉग मैनेजर को कैनवास पर संदर्भित यूआई तत्वों का उपयोग करके डायलॉग टेक्स्ट और विकल्पों को प्रदर्शित करने में सक्षम होना चाहिए।

निष्कर्ष

खेलों में एक प्रभावी संवाद प्रणाली खिलाड़ियों को एजेंसी, प्रभाव और आभासी दुनिया में भागीदारी की भावना प्रदान करती है, जिससे गेमिंग अनुभव समृद्ध और अधिक आकर्षक हो जाता है। जैसे-जैसे खेल कथाएँ और इंटरैक्टिव कहानी अधिक परिष्कृत होती जाती हैं, संवाद प्रणालियाँ खिलाड़ी की यात्रा को आकार देने और यादगार गेमिंग अनुभव बनाने में तेजी से महत्वपूर्ण भूमिका निभाती हैं।

सुझाए गए लेख
एकता के लिए हेलीकाप्टर नियंत्रक
एकता के लिए हवाई जहाज नियंत्रक
एकता में पार्कौर प्रणाली लागू करना
एकता के लिए प्लेयर 3डी और 2डी वॉल जंप ट्यूटोरियल
एकता के लिए टॉर्च ट्यूटोरियल
एकता के लिए 3डी वर्म नियंत्रक ट्यूटोरियल
एकता के लिए 2डी कैरेक्टर नियंत्रक