Sistem Peningkatan Basis di Unity

Dalam banyak permainan, pemain dapat meningkatkan basis atau bangunan untuk membuka fitur tambahan, meningkatkan pertahanan, atau meningkatkan tingkat produksi. Tutorial ini akan memandu Anda dalam menyiapkan sistem peningkatan basis di Unity, yang memungkinkan bangunan ditingkatkan ke beberapa level dengan perubahan visual dan fungsional di setiap level.

1. Menyiapkan Struktur Dasar

Pertama, buat skrip Base yang menentukan properti markas Anda, seperti level, kesehatan, dan tingkat produksi. Setiap peningkatan level akan mengubah atribut ini.

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

Skrip Base ini menyertakan metode UpgradeBase() sederhana yang meningkatkan level dan meng-upgrade atribut basis. Lampirkan skrip ini ke GameObject basis dalam adegan.

2. Membuat Manajer Peningkatan

Berikutnya, buat skrip UpgradeManager yang mengelola peningkatan dasar, termasuk memeriksa apakah pemain memiliki cukup mata uang untuk melakukan peningkatan.

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

Lampirkan skrip UpgradeManager ini ke GameObject, tetapkan GameObject dasar ke kolom playerBase, dan tetapkan upgradeCost awal. Setiap peningkatan akan meningkatkan biaya, sehingga peningkatan di masa mendatang akan lebih sulit.

3. Menyiapkan Sistem Mata Uang

Untuk mengelola biaya peningkatan, tambahkan CurrencySystem sebagai cara mudah untuk melacak dan membelanjakan mata uang pemain. Berikut contohnya:

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

Lampirkan CurrencySystem ini ke GameObject dalam adegan. Pola singleton memungkinkan akses mudah dari skrip lain, seperti UpgradeManager.

4. Memperbarui Visual dan Efek per Level

Untuk membuat setiap peningkatan basis terlihat berbeda secara visual, tambahkan variasi untuk setiap level, seperti model atau tekstur yang berbeda. Misalnya:

  1. Buat beberapa model 3D untuk setiap tingkat dasar, atau siapkan tekstur/material yang berbeda.
  2. Tambahkan kode di kelas Base untuk menukar model atau material setiap kali level dinaikkan.

Berikut cuplikan kode untuk memperbarui visual dalam skrip 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);
    }
}

Kode ini akan mengaktifkan model yang sesuai dengan level pangkalan saat ini dan menonaktifkan yang lain.

5. Membuat UI untuk Upgrade

Selanjutnya, buat elemen UI untuk memungkinkan pemain memulai peningkatan dan melacak level pangkalan saat ini. Untuk melakukannya:

  1. Buat Kanvas dengan tombol berlabel "Upgrade Base".
  2. Lampirkan peristiwa OnClick ke tombol ini, yang menautkannya ke metode AttemptUpgrade dari UpgradeManager.
  3. Menampilkan level pangkalan, kesehatan, dan tingkat produksi pada UI untuk memberikan umpan balik kepada pemain mengenai kemajuan peningkatan.

6. Menguji Sistem Peningkatan

Jalankan game dan klik tombol "Upgrade Base". Dengan setiap peningkatan, atribut basis akan meningkat, dan visual akan berubah sesuai dengan itu. Gunakan log Debug untuk memverifikasi perubahan mata uang dan penyesuaian level.

Memperluas Sistem

Sistem peningkatan dasar ini dapat diperluas dengan menambahkan:

  • Level baru dengan atribut berbeda dan peningkatan visual.
  • Persyaratan sumber daya di luar mata uang, seperti bahan atau waktu.
  • Efek khusus untuk peningkatan, seperti efek partikel atau umpan balik suara.

Kesimpulan

Kami menciptakan sistem peningkatan dasar di Unity, yang menampilkan peningkatan atribut dinamis, pemeriksaan mata uang sederhana, dan UI untuk peningkatan. Sistem ini menyediakan fondasi untuk menambahkan mekanisme yang lebih kompleks dalam permainan Anda, seperti peningkatan multi-tahap dan visual yang berbeda untuk setiap level.