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:
- Utwórz wiele modeli 3D dla każdego poziomu bazowego lub przygotuj różne tekstury/materiały.
- 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ć:
- Utwórz obiekt Canvas z przyciskiem oznaczonym "Upgrade Base".
- Przypisz do tego przycisku zdarzenie OnClick, łącząc je z metodąAttemptUpgradeobiektuUpgradeManager.
- 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.