Tạo hệ thống nhiệm vụ trong Unity

Nhiệm vụ là một phần cơ bản của nhiều trò chơi, cung cấp cho người chơi mục tiêu và phần thưởng. Trong hướng dẫn này, bạn sẽ học cách tạo hệ thống nhiệm vụ đơn giản trong Unity. Chúng tôi sẽ đề cập đến việc tạo, theo dõi và hoàn thành nhiệm vụ.

Thiết lập dự án

Trước khi bắt đầu viết mã, chúng ta hãy thiết lập một dự án Unity đơn giản:

  1. Tạo một dự án Unity mới.
  2. Tạo một thư mục mới có tên Scripts để sắp xếp các tập lệnh của chúng ta.
  3. Tạo một thư mục khác có tên Resources để lưu trữ dữ liệu nhiệm vụ của chúng ta.

Tạo lớp nhiệm vụ

Bước đầu tiên là định nghĩa lớp Quest để lưu trữ thông tin nhiệm vụ như tiêu đề, mô tả và trạng thái hoàn thành.

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

Tạo Trình quản lý nhiệm vụ

Tiếp theo, chúng ta cần một trình quản lý để xử lý các nhiệm vụ của mình. Lớp QuestManager sẽ lưu trữ và quản lý các nhiệm vụ đang hoạt động.

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

Hiển thị Nhiệm vụ trong Giao diện người dùng

Để hiển thị nhiệm vụ cho người chơi, chúng ta cần một giao diện người dùng đơn giản. Tạo một Canvas và một phần tử Text trong cảnh của bạn để hiển thị danh sách nhiệm vụ.

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

Tương tác với Nhiệm vụ

Hãy thêm một số chức năng để tương tác với nhiệm vụ của chúng ta. Ví dụ, chúng ta có thể thêm một nút để hoàn thành nhiệm vụ.

using UnityEngine;

public class QuestGiver : MonoBehaviour
{
    public string questTitle;

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

Kiểm tra hệ thống nhiệm vụ

Để kiểm tra hệ thống nhiệm vụ, hãy thêm QuestManagerQuestUI vào cảnh của bạn. Tạo một vùng kích hoạt đơn giản với tập lệnh QuestGiver được đính kèm và chỉ định tiêu đề nhiệm vụ để hoàn thành.

Phần kết luận

Chúng tôi đã đề cập đến những điều cơ bản về việc tạo hệ thống nhiệm vụ trong Unity. Chúng tôi đã học cách tạo nhiệm vụ, quản lý chúng, hiển thị chúng trong UI và tương tác với chúng. Những khái niệm này có thể được mở rộng để tạo hệ thống nhiệm vụ phức tạp hơn trong các dự án Unity của bạn.