Система улучшения игрока в Unity
Этот урок проведет вас через создание базовой системы улучшений в Unity. Системы улучшений распространены в играх, позволяя игрокам улучшать своих персонажей, снаряжение или способности с течением времени. Мы создадим пример системы улучшений, которая позволяет игроку увеличивать такие атрибуты, как здоровье, скорость и сила атаки.
Предпосылки
- Unity Редактор установлен.
- Базовые знания C# и системы пользовательского интерфейса Unity.
- Проект, созданный с использованием базового игрового объекта-плеера и UI Canvas для отображения вариантов обновления.
Шаг 1: Настройте атрибуты игрока
Сначала создайте скрипт C# для определения атрибутов игрока, которые можно улучшить. Этот скрипт будет содержать такие свойства, как здоровье, скорость и сила атаки.
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);
}
}
Присоедините этот скрипт PlayerAttributes
к игровому объекту вашего игрока, чтобы управлять его атрибутами.
Шаг 2: Создание менеджера обновлений
Далее создайте скрипт UpgradeManager
для управления параметрами апгрейда и применения их к атрибутам игрока. Этот скрипт позволит вам контролировать стоимость каждого апгрейда и то, насколько он увеличивает атрибуты игрока.
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
}
}
}
Этот скрипт UpgradeManager
проверяет, достаточно ли у игрока валюты для каждого обновления, затем применяет обновление, если оно доступно. Далее мы добавим простую валютную систему для управления стоимостью обновления.
Шаг 3: Создайте простую валютную систему
Мы создадим базовую валютную систему, которая отслеживает валюту игрока и позволяет тратить ее на улучшения. Это может быть расширено для любой внутриигровой экономики.
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);
}
}
Этот скрипт CurrencySystem
может добавлять и тратить валюту, и он реализован как синглтон, поэтому вы можете легко получить к нему доступ из других скриптов. Прикрепите его к GameObject в сцене.
Шаг 4: Настройка пользовательского интерфейса для обновлений
Чтобы позволить игрокам взаимодействовать с системой улучшений, создайте пользовательский интерфейс в Unity с кнопками для каждого варианта улучшений. Вот как:
- Создайте холст в своей сцене (GameObject > UI > Canvas).
- Добавьте кнопки на холст, обозначив их как "Upgrade Health,", "Upgrade Speed," и "Upgrade Attack".
- Присоедините скрипт
UpgradeManager
к игровому объекту на сцене и назначьте игровой объект игрока его полюplayer
в инспекторе. - Свяжите событие On Click каждой кнопки с вызовом соответствующей функции обновления (например,
UpgradeManager.UpgradeHealth()
).
Шаг 5: Тестирование системы обновления
Запустите игру и попробуйте нажать кнопки обновления. Каждое обновление должно применяться к атрибутам игрока, а CurrencySystem
должна соответственно уменьшать валюту. Используйте журнал отладки, чтобы подтвердить, что атрибуты и валюта обновляются так, как и ожидалось.
Заключение
Мы создали базовую систему улучшений в Unity, включая атрибуты игрока, валютную систему и менеджер улучшений. Вы можете настроить эту систему, чтобы добавить больше улучшений, динамически увеличить стоимость улучшений или даже добавить новые типы улучшений на основе требований вашей игры. Эту основу можно расширить, чтобы создать более сложную и увлекательную механику улучшений в ваших играх.