Podstawowy system ulepszeń w Unity

W wielu grach gracze mogą ulepszać bazę lub budynek, aby odblokować dodatkowe funkcje, poprawić obronę lub zwiększyć wskaźniki produkcji. Ten samouczek przeprowadzi Cię przez proces konfigurowania systemu ulepszania bazy w Unity, umożliwiając ulepszanie budynku do wielu poziomów ze zmianami wizualnymi i funkcjonalnymi na każdym poziomie.

1. Konfigurowanie struktury bazowej

Najpierw utwórz skrypt Base, który definiuje właściwości Twojej bazy, takie jak jej poziom, zdrowie i szybkość produkcji. Każde ulepszenie poziomu zmodyfikuje te atrybuty.

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

Ten skrypt Base zawiera prostą metodę UpgradeBase(), która zwiększa poziom i ulepsza atrybuty bazy. Dołącz ten skrypt do GameObject bazy w scenie.

2. Tworzenie Menedżera Uaktualnień

Następnie utwórz skrypt UpgradeManager, który będzie zarządzał podstawowymi ulepszeniami, m.in. sprawdzał, czy gracz ma wystarczająco dużo waluty na ulepszenie.

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

Dołącz ten skrypt UpgradeManager do GameObject, przypisz bazowy GameObject do jego pola playerBase i ustaw początkowy upgradeCost. Każda aktualizacja zwiększa koszt, co sprawia, że ​​przyszłe aktualizacje są trudniejsze.

3. Konfigurowanie systemu walutowego

Aby zarządzać kosztami ulepszeń, dodaj CurrencySystem jako prosty sposób śledzenia i wydawania waluty gracza. Oto przykład:

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

Dołącz ten CurrencySystem do GameObject w scenie. Wzorzec singleton pozwala na łatwy dostęp z innych skryptów, takich jak UpgradeManager.

4. Aktualizowanie efektów wizualnych i efektów na każdym poziomie

Aby każda aktualizacja bazy była wizualnie odmienna, dodaj wariacje dla każdego poziomu, takie jak różne modele lub tekstury. Na przykład:

  1. Utwórz wiele modeli 3D dla każdego poziomu bazowego lub przygotuj różne tekstury/materiały.
  2. Dodaj kod w klasie Base, aby zamieniać modele lub materiały za każdym razem, gdy poziom zostanie zwiększony.

Oto fragment kodu służący do aktualizacji elementów wizualnych w skrypcie Base:

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

Ten kod aktywuje model odpowiadający aktualnemu poziomowi bazy i dezaktywuje pozostałe.

5. Tworzenie interfejsu użytkownika dla uaktualnień

Następnie utwórz elementy interfejsu użytkownika, aby umożliwić graczowi inicjowanie ulepszeń i śledzenie aktualnego poziomu bazy. Aby to zrobić:

  1. Utwórz obiekt Canvas z przyciskiem oznaczonym "Upgrade Base".
  2. Przypisz do tego przycisku zdarzenie OnClick, łącząc je z metodą AttemptUpgrade obiektu UpgradeManager.
  3. Wyświetl na interfejsie użytkownika poziom bazy, jej stan zdrowia i tempo produkcji, aby gracze mogli śledzić postępy w ulepszaniu.

6. Testowanie systemu aktualizacji

Uruchom grę i kliknij przycisk "Upgrade Base". Z każdym ulepszeniem atrybuty bazy powinny się zwiększać, a efekty wizualne powinny się odpowiednio zmieniać. Użyj Debug log, aby zweryfikować zmiany waluty i dostosowania poziomów.

Rozszerzanie systemu

Ten podstawowy system ulepszeń można rozszerzyć poprzez dodanie:

  • Nowe poziomy z wyróżniającymi się atrybutami i ulepszoną grafiką.
  • Wymagania dotyczące zasobów wykraczające poza walutę, takie jak materiały i czas.
  • Efekty specjalne dla ulepszeń, jak np. efekty cząsteczkowe lub sprzężenie dźwiękowe.

Wniosek

Stworzyliśmy podstawowy system ulepszeń w Unity, obejmujący dynamiczne zwiększanie atrybutów, proste sprawdzanie waluty i interfejs użytkownika dla ulepszeń. Ten system zapewnia podstawę do dodawania bardziej złożonych mechanizmów do gry, takich jak wieloetapowe ulepszenia i odrębne wizualizacje dla każdego poziomu.