Player Upgrade System i Unity

Denne vejledning vil guide dig gennem oprettelse af et grundlæggende opgraderingssystem i Unity. Opgraderingssystemer er almindelige i spil, hvilket giver spillerne mulighed for at forbedre deres karakterer, udstyr eller evner over tid. Vi laver et eksempel på et opgraderingssystem, der giver en spiller mulighed for at øge egenskaber som sundhed, hastighed og angrebskraft.

Forudsætninger

  • Unity Editor installeret.
  • Grundlæggende forståelse af C# og Unitys UI-system.
  • Et projekt sat op med et grundlæggende afspiller GameObject og et UI Canvas til at vise opgraderingsmuligheder.

Trin 1: Konfigurer afspillerattributter

Først skal du oprette et C#-script for at definere spillerens egenskaber, der kan opgraderes. Dette script vil indeholde egenskaber som sundhed, hastighed og angrebskraft.

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

Vedhæft dette PlayerAttributes script til din spiller GameObject for at administrere dets attributter.

Trin 2: Opret Upgrade Manager

Opret derefter et UpgradeManager-script for at administrere opgraderingsmuligheder og anvende dem på spillerens egenskaber. Dette script giver dig mulighed for at kontrollere, hvor meget hver opgradering koster, og hvor meget den øger spillerens egenskaber.

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-script kontrollerer, om spilleren har nok valuta til hver opgradering, og anvender derefter opgraderingen, hvis det er overkommeligt. Dernæst tilføjer vi et simpelt valutasystem til styring af opgraderingsomkostninger.

Trin 3: Opret et simpelt valutasystem

Vi opretter et grundlæggende valutasystem, der sporer spillerens valuta og giver dem mulighed for at bruge den på opgraderinger. Dette kan udvides til 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 script kan tilføje og bruge valuta, og det er implementeret som en singleton, så du nemt kan få adgang til det fra andre scripts. Vedhæft det til et GameObject i scenen.

Trin 4: Konfigurer brugergrænsefladen til opgraderinger

For at lade spillere interagere med opgraderingssystemet skal du oprette en brugergrænseflade i Unity med knapper for hver opgraderingsmulighed. Sådan gør du:

  1. Opret et lærred i din scene (GameObject > UI > Canvas).
  2. Tilføj knapper til lærredet, og mærk dem som "Upgrade Health," "Upgrade Speed," og "Upgrade Attack".
  3. Vedhæft UpgradeManager-scriptet til et GameObject i scenen, og tildel din spiller GameObject til dets player-felt i Inspector.
  4. Link hver knaps On Click hændelse for at kalde den relevante opgraderingsfunktion (f.eks. UpgradeManager.UpgradeHealth()).

Trin 5: Test af opgraderingssystemet

Kør spillet, og prøv at trykke på opgraderingsknapperne. Hver opgradering bør gælde for spillerens egenskaber, og CurrencySystem bør reducere valutaen tilsvarende. Brug fejlfindingsloggen til at bekræfte, at attributter og valuta opdateres som forventet.

Konklusion

Vi oprettede et grundlæggende opgraderingssystem i Unity, inklusive spillerattributter, et valutasystem og en opgraderingsmanager. Du kan tilpasse dette system til at tilføje flere opgraderinger, øge opgraderingsomkostningerne dynamisk eller endda tilføje nye typer opgraderinger baseret på dit spils krav. Dette fundament kan udvides for at skabe mere kompleks og engagerende opgraderingsmekanik i dine spil.