Базова система оновлення в Unity

У багатьох іграх гравці можуть оновити базу чи будівлю, щоб розблокувати додаткові функції, покращити захист або збільшити продуктивність. Цей підручник допоможе вам налаштувати базову систему оновлення в Unity, що дозволить оновити будівлю до кількох рівнів із візуальними та функціональними змінами на кожному рівні.

1. Налаштування базової структури

Спочатку створіть сценарій Base, який визначає властивості вашої бази, такі як її рівень, здоров’я та продуктивність. Кожне підвищення рівня змінюватиме ці атрибути.

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

Цей сценарій Base містить простий метод UpgradeBase(), який збільшує рівень і оновлює атрибути бази. Приєднайте цей сценарій до базового GameObject у сцені.

2. Створення менеджера оновлення

Далі створіть сценарій UpgradeManager, який керуватиме базовими оновленнями, включаючи перевірку наявності у гравця достатньої валюти для оновлення.

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

Прикріпіть цей сценарій UpgradeManager до GameObject, призначте базовий GameObject до його поля playerBase і встановіть початкову upgradeCost. Кожне оновлення збільшує вартість, що робить майбутні оновлення більш складними.

3. Налаштування валютної системи

Щоб керувати витратами на оновлення, додайте CurrencySystem як простий спосіб відстежувати та витрачати валюту гравця. Ось приклад:

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

Приєднайте цей CurrencySystem до GameObject на сцені. Шаблон Singleton забезпечує легкий доступ з інших сценаріїв, таких як UpgradeManager.

4. Оновлення візуальних елементів і ефектів для кожного рівня

Щоб зробити кожне базове оновлення візуально відмінним, додайте варіації для кожного рівня, наприклад різні моделі чи текстури. Наприклад:

  1. Створіть кілька 3D-моделей для кожного базового рівня або підготуйте різні текстури/матеріали.
  2. Додайте код у клас Base, щоб міняти місцями моделі або матеріали кожного разу, коли рівень підвищується.

Ось фрагмент коду для оновлення візуальних елементів у сценарії 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);
    }
}

Цей код активує модель, яка відповідає поточному рівню бази, і деактивує інші.

5. Створення інтерфейсу користувача для оновлень

Потім створіть елементи інтерфейсу, щоб дозволити гравцеві ініціювати оновлення та відстежувати поточний рівень бази. Щоб зробити це:

  1. Створіть полотно з кнопкою з позначкою "Upgrade Base".
  2. Додайте подію OnClick до цієї кнопки, пов’язавши її з методом AttemptUpgradeUpgradeManager.
  3. Відображайте базовий рівень, здоров’я та продуктивність в інтерфейсі користувача, щоб дати гравцям відгук про хід оновлення.

6. Тестування системи оновлення

Запустіть гру та натисніть кнопку "Upgrade Base". З кожним оновленням атрибути бази мають збільшуватися, а візуальні ефекти відповідно змінюватися. Використовуйте журнал налагодження, щоб перевірити зміни валюти та коригування рівня.

Розширення системи

Цю базову систему оновлення можна розширити, додавши:

  • Нові рівні з відмінними атрибутами та візуальними покращеннями.
  • Вимоги до ресурсів, крім валюти, як-от матеріали або час.
  • Спеціальні ефекти для оновлень, як-от ефекти частинок або звуковий відгук.

Висновок

Ми створили базову систему оновлення в Unity, яка включає динамічне збільшення атрибутів, просту перевірку валюти та інтерфейс користувача для оновлень. Ця система забезпечує основу для додавання складніших механізмів у вашу гру, таких як багатоетапні оновлення та чіткі візуальні ефекти для кожного рівня.