Spilleroppgraderingssystem i Unity

Denne opplæringen vil veilede deg gjennom å lage et grunnleggende oppgraderingssystem i Unity. Oppgraderingssystemer er vanlige i spill, og lar spillerne forbedre karakterene, utstyret eller evnene sine over tid. Vi vil lage et eksempel på et oppgraderingssystem som lar en spiller øke egenskaper som helse, hastighet og angrepskraft.

Forutsetninger

  • Unity Editor installert.
  • Grunnleggende forståelse av C# og Unity sitt UI-system.
  • Et prosjekt satt opp med en grunnleggende spiller GameObject og et UI Canvas for å vise oppgraderingsalternativer.

Trinn 1: Sett opp spillerattributter

Lag først et C#-skript for å definere spillerens attributter som kan oppgraderes. Dette skriptet vil inneholde egenskaper som helse, hastighet og angrepskraft.

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

Legg ved dette PlayerAttributes-skriptet til spillerens GameObject for å administrere attributtene.

Trinn 2: Opprett Upgrade Manager

Deretter oppretter du et UpgradeManager-skript for å administrere oppgraderingsalternativer og bruke dem på spillerens attributter. Dette skriptet lar deg kontrollere hvor mye hver oppgradering koster og hvor mye den øker spillerens attributter.

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

Dette UpgradeManager-skriptet sjekker om spilleren har nok valuta for hver oppgradering, og bruker deretter oppgraderingen hvis det er rimelig. Deretter legger vi til et enkelt valutasystem for å administrere oppgraderingskostnader.

Trinn 3: Lag et enkelt valutasystem

Vi lager et grunnleggende valutasystem som sporer spillerens valuta og lar dem bruke den på oppgraderinger. Dette kan utvides for enhver økonomi i spillet.

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

Dette CurrencySystem-skriptet kan legge til og bruke valuta, og det er implementert som en singleton slik at du enkelt kan få tilgang til det fra andre skript. Fest den til et GameObject i scenen.

Trinn 4: Konfigurer brukergrensesnittet for oppgraderinger

For å la spillere samhandle med oppgraderingssystemet, lag et brukergrensesnitt i Unity med knapper for hvert oppgraderingsalternativ. Slik gjør du det:

  1. Lag et lerret i scenen din (GameObject > UI > Canvas).
  2. Legg til knapper på lerretet, merk dem som "Upgrade Health," "Upgrade Speed," og "Upgrade Attack".
  3. Fest UpgradeManager-skriptet til et GameObject i scenen, og tilordne spilleren GameObject til dets player-felt i Inspector.
  4. Koble hver knapps On Click-hendelse for å kalle opp den aktuelle oppgraderingsfunksjonen (f.eks. UpgradeManager.UpgradeHealth()).

Trinn 5: Testing av oppgraderingssystemet

Kjør spillet, og prøv å trykke på oppgraderingsknappene. Hver oppgradering bør gjelde for spillerens attributter, og CurrencySystem bør redusere valutaen tilsvarende. Bruk feilsøkingsloggen for å bekrefte at attributter og valuta oppdateres som forventet.

Konklusjon

Vi laget et grunnleggende oppgraderingssystem i Unity, inkludert spillerattributter, et valutasystem og en oppgraderingsadministrator. Du kan tilpasse dette systemet for å legge til flere oppgraderinger, øke oppgraderingskostnadene dynamisk, eller til og med legge til nye typer oppgraderinger basert på spillets krav. Dette grunnlaget kan utvides for å skape mer kompleks og engasjerende oppgraderingsmekanikk i spillene dine.