إنشاء نظام المهام في Unity

تُعد المهام جزءًا أساسيًا من العديد من الألعاب، حيث توفر للاعبين أهدافًا ومكافآت. في هذا البرنامج التعليمي، ستتعلم كيفية إنشاء نظام مهام بسيط في Unity. وسنتناول إنشاء المهام وتتبعها وإكمالها.

إعداد المشروع

قبل أن نبدأ في الترميز، دعنا نقوم بإعداد مشروع Unity بسيط:

  1. إنشاء مشروع Unity جديد.
  2. قم بإنشاء مجلد جديد باسم Scripts لتنظيم البرامج النصية الخاصة بنا.
  3. قم بإنشاء مجلد آخر باسم Resources لتخزين بيانات مهمتنا.

إنشاء فئة البحث

الخطوة الأولى هي تحديد فئة Quest لحمل معلومات المهمة مثل العنوان والوصف وحالة الإكمال.

using UnityEngine;

[System.Serializable]
public class Quest
{
    public string title;
    public string description;
    public bool isCompleted;

    public Quest(string title, string description)
    {
        this.title = title;
        this.description = description;
        this.isCompleted = false;
    }

    public void CompleteQuest()
    {
        isCompleted = true;
        Debug.Log("Quest Completed: " + title);
    }
}

إنشاء مدير المهام

بعد ذلك، نحتاج إلى مدير للتعامل مع مهامنا. ستقوم فئة QuestManager بتخزين وإدارة المهام النشطة.

using System.Collections.Generic;
using UnityEngine;

public class QuestManager : MonoBehaviour
{
    public List<Quest> quests = new List<Quest>();

    void Start()
    {
        // Example quests
        quests.Add(new Quest("Find the Key", "Find the key to unlock the door."));
        quests.Add(new Quest("Defeat the Dragon", "Defeat the dragon in the cave."));
    }

    public void CompleteQuest(string title)
    {
        Quest quest = quests.Find(q => q.title == title);
        if (quest != null && !quest.isCompleted)
        {
            quest.CompleteQuest();
        }
    }

    public List<Quest> GetActiveQuests()
    {
        return quests.FindAll(q => !q.isCompleted);
    }
}

عرض المهام في واجهة المستخدم

لعرض المهام للاعب، نحتاج إلى واجهة مستخدم بسيطة. قم بإنشاء لوحة وعنصر نص في المشهد الخاص بك لعرض قائمة المهام.

using UnityEngine;
using UnityEngine.UI;

public class QuestUI : MonoBehaviour
{
    public Text questListText;
    private QuestManager questManager;

    void Start()
    {
        questManager = FindObjectOfType<QuestManager>();
        UpdateQuestList();
    }

    void UpdateQuestList()
    {
        questListText.text = "Quests:\n";
        foreach (Quest quest in questManager.GetActiveQuests())
        {
            questListText.text += "- " + quest.title + ": " + quest.description + "\n";
        }
    }
}

التفاعل مع المهام

دعنا نضيف بعض الوظائف للتفاعل مع مهامنا. على سبيل المثال، يمكننا إضافة زر لإكمال مهمة.

using UnityEngine;

public class QuestGiver : MonoBehaviour
{
    public string questTitle;

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            QuestManager questManager = FindObjectOfType<QuestManager>();
            questManager.CompleteQuest(questTitle);
        }
    }
}

اختبار نظام المهام

لاختبار نظام المهام، أضف QuestManager وQuestUI إلى المشهد الخاص بك. أنشئ منطقة تشغيل بسيطة مع إرفاق نص QuestGiver، وقم بتعيين عنوان مهمة لإكمالها.

خاتمة

لقد قمنا بتغطية أساسيات إنشاء نظام مهام في Unity. لقد تعلمنا كيفية إنشاء المهام وإدارتها وعرضها في واجهة المستخدم والتفاعل معها. يمكن توسيع هذه المفاهيم لإنشاء أنظمة مهام أكثر تعقيدًا في مشاريع Unity الخاصة بك.