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ąAttemptUpgrade
obiektuUpgradeManager
. - 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.