System ulepszeń gracza w Unity

Ten samouczek przeprowadzi Cię przez proces tworzenia podstawowego systemu ulepszeń w Unity. Systemy ulepszeń są powszechne w grach, pozwalając graczom ulepszać swoje postacie, wyposażenie lub umiejętności z czasem. Stworzymy przykładowy system ulepszeń, który pozwala graczowi zwiększać atrybuty, takie jak zdrowie, szybkość i siła ataku.

Wymagania wstępne

  • Unity Edytor zainstalowany.
  • Podstawowa znajomość języka C# i systemu interfejsu użytkownika Unity.
  • Projekt utworzony z podstawowego obiektu GameObject gracza i interfejsu użytkownika Canvas do wyświetlania opcji aktualizacji.

Krok 1: Skonfiguruj atrybuty gracza

Najpierw utwórz skrypt C#, aby zdefiniować atrybuty gracza, które można ulepszyć. Ten skrypt będzie zawierał właściwości takie jak zdrowie, szybkość i moc ataku.

using UnityEngine;

public class PlayerAttributes : MonoBehaviour
{
    public int health = 100;
    public float speed = 5f;
    public int attackPower = 10;

    public void IncreaseHealth(int amount)
    {
        health += amount;
        Debug.Log("Health increased to " + health);
    }

    public void IncreaseSpeed(float amount)
    {
        speed += amount;
        Debug.Log("Speed increased to " + speed);
    }

    public void IncreaseAttackPower(int amount)
    {
        attackPower += amount;
        Debug.Log("Attack Power increased to " + attackPower);
    }
}

Dołącz ten skrypt PlayerAttributes do obiektu GameObject gracza, aby zarządzać jego atrybutami.

Krok 2: Utwórz Menedżera uaktualnień

Następnie utwórz skrypt UpgradeManager, aby zarządzać opcjami ulepszeń i stosować je do atrybutów gracza. Ten skrypt pozwoli Ci kontrolować, ile kosztuje każde ulepszenie i o ile zwiększa atrybuty gracza.

using UnityEngine;

public class UpgradeManager : MonoBehaviour
{
    public PlayerAttributes player;
    public int healthUpgradeCost = 50;
    public int speedUpgradeCost = 30;
    public int attackUpgradeCost = 40;

    public void UpgradeHealth()
    {
        if (CurrencySystem.Instance.SpendCurrency(healthUpgradeCost))
        {
            player.IncreaseHealth(10); // Increase health by 10
        }
    }

    public void UpgradeSpeed()
    {
        if (CurrencySystem.Instance.SpendCurrency(speedUpgradeCost))
        {
            player.IncreaseSpeed(0.5f); // Increase speed by 0.5
        }
    }

    public void UpgradeAttackPower()
    {
        if (CurrencySystem.Instance.SpendCurrency(attackUpgradeCost))
        {
            player.IncreaseAttackPower(5); // Increase attack power by 5
        }
    }
}

Ten skrypt UpgradeManager sprawdza, czy gracz ma wystarczająco dużo waluty na każdą aktualizację, a następnie stosuje aktualizację, jeśli jest dostępna. Następnie dodamy prosty system walutowy do zarządzania kosztami aktualizacji.

Krok 3: Utwórz prosty system walutowy

Stworzymy podstawowy system walutowy, który śledzi walutę gracza i pozwala mu wydawać ją na ulepszenia. Można go rozszerzyć na dowolną gospodarkę w grze.

using UnityEngine;

public class CurrencySystem : MonoBehaviour
{
    public static CurrencySystem Instance;
    public int currency = 100;

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

Ten skrypt CurrencySystem może dodawać i wydawać walutę, a jest on zaimplementowany jako singleton, więc możesz łatwo uzyskać do niego dostęp z innych skryptów. Dołącz go do GameObject w scenie.

Krok 4: Skonfiguruj interfejs użytkownika dla uaktualnień

Aby umożliwić graczom interakcję z systemem ulepszeń, utwórz interfejs użytkownika w Unity z przyciskami dla każdej opcji ulepszeń. Oto jak to zrobić:

  1. Utwórz obiekt Canvas w swojej scenie (GameObject > UI > Canvas).
  2. Dodaj przyciski do obszaru roboczego, oznaczając je jako "Upgrade Health,", "Upgrade Speed," i "Upgrade Attack".
  3. Dołącz skrypt UpgradeManager do obiektu GameObject w scenie i przypisz obiekt GameObject gracza do jego pola player w inspektorze.
  4. Połącz zdarzenie On Click każdego przycisku, aby wywołać odpowiednią funkcję aktualizacji (np. UpgradeManager.UpgradeHealth()).

Krok 5: Testowanie systemu aktualizacji

Uruchom grę i spróbuj nacisnąć przyciski ulepszeń. Każde ulepszenie powinno dotyczyć atrybutów gracza, a CurrencySystem powinien odpowiednio zmniejszyć walutę. Użyj dziennika debugowania, aby potwierdzić, że atrybuty i waluta aktualizują się zgodnie z oczekiwaniami.

Wniosek

Stworzyliśmy podstawowy system ulepszeń w Unity, obejmujący atrybuty gracza, system walutowy i menedżera ulepszeń. Możesz dostosować ten system, aby dodać więcej ulepszeń, dynamicznie zwiększyć koszty ulepszeń, a nawet dodać nowe typy ulepszeń w oparciu o wymagania gry. Tę podstawę można rozszerzyć, aby tworzyć bardziej złożone i angażujące mechanizmy ulepszeń w grach.