Basuppgraderingssystem i Unity

I många spel kan spelare uppgradera en bas eller byggnad för att låsa upp ytterligare funktioner, förbättra försvaret eller öka produktionshastigheten. Denna handledning guidar dig genom att sätta upp ett basuppgraderingssystem i Unity, vilket gör att en byggnad kan uppgraderas till flera nivåer med visuella och funktionella ändringar på varje nivå.

1. Ställa in basstrukturen

Skapa först ett Base-skript som definierar egenskaperna för din bas, såsom dess nivå, hälsa och produktionshastighet. Varje nivåuppgradering kommer att ändra dessa attribut.

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

Detta Base-skript innehåller en enkel UpgradeBase()-metod som ökar nivån och uppgraderar basens attribut. Bifoga det här skriptet till basen GameObject i scenen.

2. Skapa en uppgraderingshanterare

Skapa sedan ett UpgradeManager-skript som hanterar basuppgraderingarna, inklusive att kontrollera om spelaren har tillräckligt med valuta för att uppgradera.

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

Bifoga detta UpgradeManager-skript till ett GameObject, tilldela bas GameObject till dess playerBase-fält och ställ in den initiala upgradeCost. Varje uppgradering ökar kostnaderna, vilket gör framtida uppgraderingar mer utmanande.

3. Konfigurera ett valutasystem

För att hantera uppgraderingskostnader, lägg till ett CurrencySystem som ett enkelt sätt att spåra och spendera spelarens valuta. Här är ett exempel:

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

Fäst detta CurrencySystem till ett GameObject i scenen. Singleton-mönstret tillåter enkel åtkomst från andra skript, som UpgradeManager.

4. Uppdatering av bilder och effekter per nivå

För att göra varje basuppgradering visuellt distinkt, lägg till varianter för varje nivå, till exempel olika modeller eller texturer. Till exempel:

  1. Skapa flera 3D-modeller för varje basnivå, eller förbered olika texturer/material.
  2. Lägg till kod i klassen Base för att byta modeller eller material varje gång nivån höjs.

Här är ett kodavsnitt för att uppdatera bilder 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);
    }
}

Denna kod kommer att aktivera modellen som matchar basens nuvarande nivå och inaktivera andra.

5. Skapa ett användargränssnitt för uppgraderingar

Skapa sedan UI-element för att låta spelaren initiera uppgraderingar och spåra basens nuvarande nivå. Gör så här:

  1. Skapa en Canvas med en knapp märkt "Upgrade Base".
  2. Bifoga en OnClick-händelse till den här knappen, länka den till AttemptUpgrade-metoden för UpgradeManager.
  3. Visa basens nivå, hälsa och produktionshastighet i användargränssnittet för att ge spelarna feedback om uppgraderingsframsteg.

6. Testar uppgraderingssystemet

Kör spelet och klicka på "Upgrade Base"-knappen. Med varje uppgradering bör basens attribut öka, och grafiken bör ändras därefter. Använd felsökningsloggen för att verifiera valutaändringar och nivåjusteringar.

Utöka systemet

Detta basuppgraderingssystem kan utökas genom att lägga till:

  • Nya nivåer med distinkta attribut och visuella förbättringar.
  • Resurskrav utöver valuta, såsom material eller tid.
  • Specialeffekter för uppgraderingar, som partikeleffekter eller ljudåterkoppling.

Slutsats

Vi skapade ett basuppgraderingssystem i Unity, med dynamiska attributökningar, en enkel valutakontroll och användargränssnitt för uppgraderingar. Det här systemet ger en grund för att lägga till mer komplex mekanik i ditt spel, såsom flerstegsuppgraderingar och distinkta bilder för varje nivå.