Grunnoppgraderingssystem i Unity

I mange spill kan spillere oppgradere en base eller bygning for å låse opp tilleggsfunksjoner, forbedre forsvaret eller øke produksjonshastigheten. Denne opplæringen vil veilede deg gjennom å sette opp et grunnleggende oppgraderingssystem i Unity, slik at en bygning kan oppgraderes til flere nivåer med visuelle og funksjonelle endringer på hvert nivå.

1. Sette opp basisstrukturen

Først lager du et Base-skript som definerer egenskapene til basen din, for eksempel nivå, helse og produksjonshastighet. Hver nivåoppgradering vil endre disse attributtene.

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-skriptet inkluderer en enkel UpgradeBase()-metode som øker nivået og oppgraderer basens attributter. Fest dette skriptet til base GameObject i scenen.

2. Opprette en oppgraderingsbehandling

Deretter oppretter du et UpgradeManager-skript som administrerer basisoppgraderingene, inkludert å sjekke om spilleren har nok valuta til å oppgradere.

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

Fest dette UpgradeManager-skriptet til et GameObject, tilordne base GameObject til dets playerBase-felt, og angi den første upgradeCost. Hver oppgradering øker kostnadene, noe som gjør fremtidige oppgraderinger mer utfordrende.

3. Sette opp et valutasystem

For å administrere oppgraderingskostnader, legg til et CurrencySystem som en enkel måte å spore og bruke 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);
    }
}

Fest dette CurrencySystem til et GameObject i scenen. Singleton-mønsteret gir enkel tilgang fra andre skript, for eksempel UpgradeManager.

4. Oppdatering av bilder og effekter per nivå

For å gjøre hver basisoppgradering visuelt distinkt, legg til variasjoner for hvert nivå, for eksempel forskjellige modeller eller teksturer. For eksempel:

  1. Lag flere 3D-modeller for hvert basisnivå, eller lag forskjellige teksturer/materialer.
  2. Legg til kode i Base-klassen for å bytte modeller eller materialer hver gang nivået økes.

Her er en kodebit for oppdatering av grafikk i Base-skriptet:

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 koden vil aktivere modellen som samsvarer med basens nåværende nivå og deaktivere andre.

5. Opprette et brukergrensesnitt for oppgraderinger

Deretter oppretter du UI-elementer for å la spilleren starte oppgraderinger og spore basens nåværende nivå. Slik gjør du dette:

  1. Lag et lerret med en knapp merket "Upgrade Base".
  2. Legg ved en OnClick-hendelse til denne knappen, og koble den til AttemptUpgrade-metoden til UpgradeManager.
  3. Vis basens nivå, helse og produksjonshastighet på brukergrensesnittet for å gi spillerne tilbakemelding om oppgraderingsfremdriften.

6. Tester oppgraderingssystemet

Kjør spillet og klikk på "Upgrade Base"-knappen. Med hver oppgradering bør basens attributter øke, og det visuelle skal endres tilsvarende. Bruk feilsøkingsloggen for å bekrefte valutaendringer og nivåjusteringer.

Utvide systemet

Dette grunnleggende oppgraderingssystemet kan utvides ved å legge til:

  • Nye nivåer med distinkte attributter og visuelle forbedringer.
  • Ressurskrav utover valuta, for eksempel materialer eller tid.
  • Spesialeffekter for oppgraderinger, som partikkeleffekter eller lydtilbakemeldinger.

Konklusjon

Vi opprettet et grunnleggende oppgraderingssystem i Unity, med dynamiske attributtøkninger, en enkel valutasjekk og brukergrensesnitt for oppgraderinger. Dette systemet gir et grunnlag for å legge til mer kompleks mekanikk i spillet ditt, for eksempel flertrinns oppgraderinger og distinkte bilder for hvert nivå.