Hệ thống nâng cấp cơ bản trong Unity

Trong nhiều trò chơi, người chơi có thể nâng cấp căn cứ hoặc tòa nhà để mở khóa các tính năng bổ sung, cải thiện khả năng phòng thủ hoặc tăng tỷ lệ sản xuất. Hướng dẫn này sẽ hướng dẫn bạn thiết lập hệ thống nâng cấp căn cứ trong Unity, cho phép nâng cấp tòa nhà lên nhiều cấp độ với các thay đổi về mặt hình ảnh và chức năng ở mỗi cấp độ.

1. Thiết lập cấu trúc cơ sở

Đầu tiên, tạo một tập lệnh Base xác định các thuộc tính của căn cứ của bạn, chẳng hạn như cấp độ, sức khỏe và tốc độ sản xuất. Mỗi lần nâng cấp cấp độ sẽ sửa đổi các thuộc tính này.

using UnityEngine;

public class Base : MonoBehaviour
{
    public int level = 1;
    public int health = 100;
    public int productionRate = 10;

    public void UpgradeBase()
    {
        level++;
        health += 50; // Increase health by 50 with each level
        productionRate += 5; // Increase production rate by 5 with each level
        Debug.Log("Base upgraded to level " + level);
    }
}

Tập lệnh Base này bao gồm một phương thức UpgradeBase() đơn giản để tăng cấp độ và nâng cấp các thuộc tính của cơ sở. Đính kèm tập lệnh này vào GameObject cơ sở trong cảnh.

2. Tạo Trình quản lý nâng cấp

Tiếp theo, tạo một tập lệnh UpgradeManager để quản lý các nâng cấp cơ bản, bao gồm kiểm tra xem người chơi có đủ tiền để nâng cấp hay không.

using UnityEngine;

public class UpgradeManager : MonoBehaviour
{
    public Base playerBase;
    public int upgradeCost = 100;

    public void AttemptUpgrade()
    {
        if (CurrencySystem.Instance.SpendCurrency(upgradeCost))
        {
            playerBase.UpgradeBase();
            upgradeCost += 50; // Increase the cost for each upgrade
        }
        else
        {
            Debug.Log("Not enough currency to upgrade.");
        }
    }
}

Đính kèm tập lệnh UpgradeManager này vào GameObject, gán GameObject cơ sở vào trường playerBase của nó và đặt upgradeCost ban đầu. Mỗi lần nâng cấp đều làm tăng chi phí, khiến các lần nâng cấp trong tương lai trở nên khó khăn hơn.

3. Thiết lập hệ thống tiền tệ

Để quản lý chi phí nâng cấp, hãy thêm CurrencySystem như một cách đơn giản để theo dõi và chi tiêu tiền tệ của người chơi. Sau đây là một ví dụ:

using UnityEngine;

public class CurrencySystem : MonoBehaviour
{
    public static CurrencySystem Instance;
    public int currency = 500;

    private void Awake()
    {
        if (Instance == null)
            Instance = this;
        else
            Destroy(gameObject);
    }

    public bool SpendCurrency(int amount)
    {
        if (currency >= amount)
        {
            currency -= amount;
            Debug.Log("Currency spent: " + amount + ". Remaining: " + currency);
            return true;
        }
        else
        {
            Debug.Log("Not enough currency.");
            return false;
        }
    }

    public void AddCurrency(int amount)
    {
        currency += amount;
        Debug.Log("Currency added: " + amount + ". Total: " + currency);
    }
}

Đính kèm CurrencySystem này vào GameObject trong cảnh. Mẫu singleton cho phép dễ dàng truy cập từ các tập lệnh khác, chẳng hạn như UpgradeManager.

4. Cập nhật hình ảnh và hiệu ứng theo từng cấp độ

Để làm cho mỗi bản nâng cấp cơ sở trở nên khác biệt về mặt hình ảnh, hãy thêm các biến thể cho từng cấp độ, chẳng hạn như các mô hình hoặc kết cấu khác nhau. Ví dụ:

  1. Tạo nhiều mô hình 3D cho mỗi cấp độ cơ sở hoặc chuẩn bị các kết cấu/vật liệu khác nhau.
  2. Thêm mã vào lớp Base để hoán đổi mô hình hoặc vật liệu mỗi khi cấp độ tăng lên.

Sau đây là đoạn mã để cập nhật hình ảnh trong tập lệnh Base:

public GameObject[] levelModels; // Assign each level's model in Inspector

public void UpgradeBase()
{
    level++;
    health += 50;
    productionRate += 5;
    UpdateBaseModel();
}

void UpdateBaseModel()
{
    for (int i = 0; i < levelModels.Length; i++)
    {
        levelModels[i].SetActive(i == level - 1);
    }
}

Mã này sẽ kích hoạt mô hình phù hợp với cấp độ hiện tại của cơ sở và hủy kích hoạt các mô hình khác.

5. Tạo UI cho Nâng cấp

Tiếp theo, tạo các thành phần UI để cho phép người chơi bắt đầu nâng cấp và theo dõi cấp độ hiện tại của căn cứ. Để thực hiện việc này:

  1. Tạo một Canvas với nút có nhãn "Upgrade Base".
  2. Đính kèm sự kiện OnClick vào nút này, liên kết nó với phương thức AttemptUpgrade của UpgradeManager.
  3. Hiển thị cấp độ, sức khỏe và tốc độ sản xuất của căn cứ trên UI để cung cấp cho người chơi phản hồi về tiến trình nâng cấp.

6. Kiểm tra hệ thống nâng cấp

Chạy trò chơi và nhấp vào nút "Upgrade Base". Với mỗi lần nâng cấp, các thuộc tính của căn cứ sẽ tăng lên và hình ảnh sẽ thay đổi tương ứng. Sử dụng Nhật ký gỡ lỗi để xác minh các thay đổi về tiền tệ và điều chỉnh cấp độ.

Mở rộng hệ thống

Hệ thống nâng cấp cơ sở này có thể được mở rộng bằng cách thêm:

  • Các cấp độ mới với các thuộc tính riêng biệt và cải tiến về mặt hình ảnh.
  • Yêu cầu về nguồn lực ngoài tiền tệ, chẳng hạn như vật liệu hoặc thời gian.
  • Hiệu ứng đặc biệt để nâng cấp, như hiệu ứng hạt hoặc phản hồi âm thanh.

Phần kết luận

Chúng tôi đã tạo ra một hệ thống nâng cấp cơ sở trong Unity, có các thuộc tính tăng động, kiểm tra tiền tệ đơn giản và giao diện người dùng để nâng cấp. Hệ thống này cung cấp nền tảng để thêm các cơ chế phức tạp hơn vào trò chơi của bạn, chẳng hạn như nâng cấp nhiều giai đoạn và hình ảnh riêng biệt cho từng cấp độ.