Basisopgraderingssystem i Unity

I mange spil er spillere i stand til at opgradere en base eller bygning for at låse op for yderligere funktioner, forbedre forsvaret eller øge produktionshastigheden. Denne vejledning vil guide dig gennem opsætningen af ​​et basisopgraderingssystem i Unity, hvilket gør det muligt for en bygning at blive opgraderet til flere niveauer med visuelle og funktionelle ændringer på hvert niveau.

1. Opsætning af basisstrukturen

Først skal du oprette et Base script, der definerer egenskaberne for din base, såsom dens niveau, sundhed og produktionshastighed. Hver niveauopgradering vil ændre disse attributter.

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

Dette Base script indeholder en simpel UpgradeBase() metode, der øger niveauet og opgraderer basens attributter. Vedhæft dette script til basis GameObject i scenen.

2. Oprettelse af en Upgrade Manager

Dernæst skal du oprette et UpgradeManager script, der administrerer basisopgraderingerne, herunder at kontrollere, om spilleren har nok valuta til at opgradere.

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

Vedhæft dette UpgradeManager script til et GameObject, tildel basis GameObject til dets playerBase felt, og indstil den indledende upgradeCost. Hver opgradering øger omkostningerne, hvilket gør fremtidige opgraderinger mere udfordrende.

3. Opsætning af et valutasystem

For at administrere opgraderingsomkostninger skal du tilføje et CurrencySystem som en enkel måde at spore og bruge spillerens valuta. Her er et eksempel:

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

Vedhæft dette CurrencySystem til et GameObject i scenen. Singleton-mønsteret giver nem adgang fra andre scripts, såsom UpgradeManager.

4. Opdatering af visuals og effekter pr. niveau

For at gøre hver basisopgradering visuelt adskilt, skal du tilføje variationer for hvert niveau, såsom forskellige modeller eller teksturer. For eksempel:

  1. Opret flere 3D-modeller for hvert basisniveau, eller forbered forskellige teksturer/materialer.
  2. Tilføj kode i Base-klassen for at bytte modeller eller materialer, hver gang niveauet øges.

Her er et kodestykke til opdatering af billeder i Base scriptet:

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

Denne kode vil aktivere den model, der matcher basens nuværende niveau og deaktivere andre.

5. Oprettelse af en brugergrænseflade til opgraderinger

Derefter skal du oprette UI-elementer for at give spilleren mulighed for at starte opgraderinger og spore basens nuværende niveau. Sådan gør du:

  1. Opret et lærred med en knap mærket "Upgrade Base".
  2. Vedhæft en OnClick hændelse til denne knap, ved at linke den til AttemptUpgrade metoden i UpgradeManager.
  3. Vis basens niveau, helbred og produktionshastighed på brugergrænsefladen for at give spillerne feedback om opgraderingsfremskridt.

6. Test af opgraderingssystemet

Kør spillet og klik på knappen "Upgrade Base". Med hver opgradering bør basens attributter øges, og det visuelle skal ændres i overensstemmelse hermed. Brug fejlretningsloggen til at bekræfte valutaændringer og niveaujusteringer.

Udvidelse af systemet

Dette basisopgraderingssystem kan udvides ved at tilføje:

  • Nye niveauer med forskellige egenskaber og visuelle forbedringer.
  • Ressourcekrav ud over valuta, såsom materialer eller tid.
  • Specialeffekter til opgraderinger, såsom partikeleffekter eller lydfeedback.

Konklusion

Vi oprettede et basisopgraderingssystem i Unity, der byder på dynamiske attributforøgelser, et simpelt valutatjek og brugergrænseflade til opgraderinger. Dette system giver et grundlag for at tilføje mere kompleks mekanik i dit spil, såsom flertrinsopgraderinger og særskilte billeder for hvert niveau.