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ụ:
- 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.
- 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:
- Tạo một Canvas với nút có nhãn "Upgrade Base".
- Đính kèm sự kiện
OnClick
vào nút này, liên kết nó với phương thứcAttemptUpgrade
củaUpgradeManager
. - 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 độ.