Sistem de actualizare de bază în Unity

În multe jocuri, jucătorii pot îmbunătăți o bază sau o clădire pentru a debloca funcții suplimentare, pentru a îmbunătăți apărarea sau pentru a crește ratele de producție. Acest tutorial vă va ghida prin configurarea unui sistem de actualizare de bază în Unity, permițând ca o clădire să fie actualizată la mai multe niveluri cu modificări vizuale și funcționale la fiecare nivel.

1. Configurarea structurii de bază

Mai întâi, creați un script Base care definește proprietățile bazei dvs., cum ar fi nivelul, sănătatea și rata de producție. Fiecare upgrade de nivel va modifica aceste atribute.

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

Acest script Base include o metodă simplă UpgradeBase() care crește nivelul și actualizează atributele bazei. Atașați acest script la baza GameObject din scenă.

2. Crearea unui Manager de upgrade

Apoi, creați un script UpgradeManager care gestionează upgrade-urile de bază, inclusiv verificând dacă jucătorul are suficientă monedă pentru a face upgrade.

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

Atașați acest script UpgradeManager la un GameObject, atribuiți GameObject de bază câmpului său playerBase și setați upgradeCost inițial. Fiecare upgrade mărește costul, făcând upgrade-urile viitoare mai provocatoare.

3. Configurarea unui sistem valutar

Pentru a gestiona costurile de actualizare, adăugați un CurrencySystem ca modalitate simplă de a urmări și cheltui moneda jucătorului. Iată un exemplu:

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

Atașați acest CurrencySystem la un GameObject din scenă. Modelul singleton permite accesul ușor din alte scripturi, cum ar fi UpgradeManager.

4. Actualizarea imaginilor și efectelor pe nivel

Pentru a face fiecare upgrade de bază distinct vizual, adăugați variații pentru fiecare nivel, cum ar fi diferite modele sau texturi. De exemplu:

  1. Creați mai multe modele 3D pentru fiecare nivel de bază sau pregătiți diferite texturi/materiale.
  2. Adăugați cod în clasa Base pentru a schimba modele sau materiale de fiecare dată când nivelul crește.

Iată un fragment de cod pentru actualizarea imaginilor în scriptul 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);
    }
}

Acest cod va activa modelul care se potrivește cu nivelul actual al bazei și va dezactiva pe alții.

5. Crearea unei interfețe de utilizare pentru upgrade

Apoi, creați elemente de interfață pentru a permite jucătorului să inițieze upgrade-uri și să urmărească nivelul actual al bazei. Pentru a face acest lucru:

  1. Creați o pânză cu un buton etichetat "Upgrade Base".
  2. Atașați un eveniment OnClick la acest buton, legându-l la metoda AttemptUpgrade a UpgradeManager.
  3. Afișați nivelul bazei, sănătatea și rata de producție pe interfața de utilizare pentru a oferi jucătorilor feedback cu privire la progresul de actualizare.

6. Testarea sistemului de upgrade

Rulați jocul și faceți clic pe butonul "Upgrade Base". Cu fiecare upgrade, atributele bazei ar trebui să crească, iar imaginile ar trebui să se schimbe în consecință. Utilizați jurnalul de depanare pentru a verifica modificările valutare și ajustările de nivel.

Extinderea sistemului

Acest sistem de actualizare de bază poate fi extins prin adăugarea:

  • Niveluri noi cu atribute distincte și îmbunătățiri vizuale.
  • Cerințe de resurse dincolo de monedă, cum ar fi materiale sau timp.
  • Efecte speciale pentru upgrade, cum ar fi efecte de particule sau feedback sonor.

Concluzie

Am creat un sistem de actualizare de bază în Unity, care include creșteri dinamice ale atributelor, o verificare simplă a monedei și o interfață de utilizare pentru upgrade. Acest sistem oferă o bază pentru adăugarea unor mecanici mai complexe în jocul tău, cum ar fi upgrade-uri în mai multe etape și imagini distincte pentru fiecare nivel.