Sistem de upgrade al jucătorului în Unity

Acest tutorial vă va ghida prin crearea unui sistem de actualizare de bază în Unity. Sistemele de upgrade sunt comune în jocuri, permițând jucătorilor să-și îmbunătățească personajele, echipamentele sau abilitățile în timp. Vom crea un exemplu de sistem de upgrade care permite unui jucător să mărească atribute precum sănătatea, viteza și puterea de atac.

Cerințe preliminare

  • Unity Editor instalat.
  • Înțelegerea de bază a C# și a sistemului UI al Unity.
  • Un proiect configurat cu un player de bază GameObject și un UI Canvas pentru afișarea opțiunilor de actualizare.

Pasul 1: Configurați atributele jucătorului

Mai întâi, creați un script C# pentru a defini atributele jucătorului care pot fi actualizate. Acest script va deține proprietăți precum sănătatea, viteza și puterea de atac.

using UnityEngine;

public class PlayerAttributes : MonoBehaviour
{
    public int health = 100;
    public float speed = 5f;
    public int attackPower = 10;

    public void IncreaseHealth(int amount)
    {
        health += amount;
        Debug.Log("Health increased to " + health);
    }

    public void IncreaseSpeed(float amount)
    {
        speed += amount;
        Debug.Log("Speed increased to " + speed);
    }

    public void IncreaseAttackPower(int amount)
    {
        attackPower += amount;
        Debug.Log("Attack Power increased to " + attackPower);
    }
}

Atașați acest script PlayerAttributes jucătorului dvs. GameObject pentru a-i gestiona atributele.

Pasul 2: Creați Managerul de upgrade

Apoi, creați un script UpgradeManager pentru a gestiona opțiunile de actualizare și a le aplica atributelor jucătorului. Acest script vă va permite să controlați cât costă fiecare upgrade și cât de mult crește atributele jucătorului.

using UnityEngine;

public class UpgradeManager : MonoBehaviour
{
    public PlayerAttributes player;
    public int healthUpgradeCost = 50;
    public int speedUpgradeCost = 30;
    public int attackUpgradeCost = 40;

    public void UpgradeHealth()
    {
        if (CurrencySystem.Instance.SpendCurrency(healthUpgradeCost))
        {
            player.IncreaseHealth(10); // Increase health by 10
        }
    }

    public void UpgradeSpeed()
    {
        if (CurrencySystem.Instance.SpendCurrency(speedUpgradeCost))
        {
            player.IncreaseSpeed(0.5f); // Increase speed by 0.5
        }
    }

    public void UpgradeAttackPower()
    {
        if (CurrencySystem.Instance.SpendCurrency(attackUpgradeCost))
        {
            player.IncreaseAttackPower(5); // Increase attack power by 5
        }
    }
}

Acest script UpgradeManager verifică dacă jucătorul are suficientă monedă pentru fiecare upgrade, apoi aplică upgrade-ul dacă este accesibil. În continuare, vom adăuga un sistem valutar simplu pentru gestionarea costurilor de actualizare.

Pasul 3: Creați un sistem valutar simplu

Vom crea un sistem monetar de bază care urmărește moneda jucătorului și le va permite să o cheltuiască pe upgrade-uri. Acest lucru poate fi extins pentru orice economie din joc.

using UnityEngine;

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

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

Acest script CurrencySystem poate adăuga și cheltui monedă și este implementat ca un singleton, astfel încât să îl puteți accesa cu ușurință din alte scripturi. Atașați-l la un GameObject din scenă.

Pasul 4: Configurați interfața de utilizare pentru upgrade

Pentru a permite jucătorilor să interacționeze cu sistemul de upgrade, creați o interfață de utilizare în Unity cu butoane pentru fiecare opțiune de upgrade. Iată cum:

  1. Creează o pânză în scena ta (GameObject > UI > Canvas).
  2. Adăugați butoane în pânză, etichetându-le ca "Upgrade Health," "Upgrade Speed," și "Upgrade Attack".
  3. Atașați scriptul UpgradeManager la un GameObject din scenă și atribuiți jucătorului dvs. GameObject câmpul său player din Inspector.
  4. Conectați evenimentul On Click al fiecărui Buton pentru a apela funcția de actualizare corespunzătoare (de exemplu, UpgradeManager.UpgradeHealth()).

Pasul 5: Testarea sistemului de upgrade

Rulați jocul și încercați să apăsați butoanele de actualizare. Fiecare upgrade ar trebui să se aplice atributelor jucătorului, iar CurrencySystem ar trebui să scadă moneda în consecință. Utilizați jurnalul de depanare pentru a confirma că atributele și moneda se actualizează conform așteptărilor.

Concluzie

Am creat un sistem de actualizare de bază în Unity, incluzând atributele jucătorului, un sistem valutar și un manager de upgrade. Puteți personaliza acest sistem pentru a adăuga mai multe upgrade-uri, pentru a crește dinamic costurile de actualizare sau chiar pentru a adăuga noi tipuri de upgrade-uri în funcție de cerințele jocului dvs. Această bază poate fi extinsă pentru a crea mecanisme de upgrade mai complexe și mai captivante în jocurile dvs.