Sistema de actualización de base en Unity
En muchos juegos, los jugadores pueden mejorar una base o un edificio para desbloquear funciones adicionales, mejorar la defensa o aumentar los índices de producción. Este tutorial te guiará en la configuración de un sistema de mejora de bases en Unity, lo que permitirá mejorar un edificio a varios niveles con cambios visuales y funcionales en cada nivel.
1. Configuración de la estructura base
Primero, crea un script Base
que defina las propiedades de tu base, como su nivel, salud y tasa de producción. Cada mejora de nivel modificará estos atributos.
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);
}
}
Este script Base
incluye un método UpgradeBase()
simple que incrementa el nivel y actualiza los atributos de la base. Adjunte este script al GameObject base en la escena.
2. Creación de un administrador de actualizaciones
A continuación, crea un script UpgradeManager
que administre las actualizaciones de la base, incluida la comprobación de si el jugador tiene suficiente dinero para actualizar.
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.");
}
}
}
Adjunte este script UpgradeManager
a un GameObject, asigne el GameObject base a su campo playerBase
y establezca el upgradeCost
inicial. Cada actualización aumenta el costo, lo que hace que las actualizaciones futuras sean más desafiantes.
3. Establecimiento de un sistema monetario
Para administrar los costos de actualización, agregue un CurrencySystem
como una forma sencilla de rastrear y gastar la moneda del jugador. Aquí hay un ejemplo:
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);
}
}
Adjunte este CurrencySystem
a un GameObject en la escena. El patrón singleton permite un acceso fácil desde otros scripts, como UpgradeManager
.
4. Actualización de elementos visuales y efectos por nivel
Para que cada mejora de la base sea visualmente distinta, agrega variaciones para cada nivel, como diferentes modelos o texturas. Por ejemplo:
- Cree múltiples modelos 3D para cada nivel base o prepare diferentes texturas/materiales.
- Agregue código en la clase
Base
para intercambiar modelos o materiales cada vez que se aumenta el nivel.
A continuación se muestra un fragmento de código para actualizar elementos visuales en el script 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);
}
}
Este código activará el modelo que coincida con el nivel actual de la base y desactivará los demás.
5. Creación de una interfaz de usuario para actualizaciones
A continuación, crea elementos de la interfaz de usuario que permitan al jugador iniciar mejoras y realizar un seguimiento del nivel actual de la base. Para ello:
- Crea un lienzo con un botón etiquetado "Upgrade Base".
- Adjunte un evento
OnClick
a este botón, vinculándolo al métodoAttemptUpgrade
delUpgradeManager
. - Muestra el nivel de la base, la salud y la tasa de producción en la interfaz de usuario para brindarles a los jugadores información sobre el progreso de la actualización.
6. Probando el sistema de actualización
Ejecuta el juego y haz clic en el botón "Upgrade Base". Con cada mejora, los atributos de la base deberían aumentar y los elementos visuales deberían cambiar en consecuencia. Usa el registro de depuración para verificar los cambios de moneda y los ajustes de nivel.
Ampliando el sistema
Este sistema de actualización básico se puede ampliar agregando:
- Nuevos niveles con atributos distintivos y mejoras visuales.
- Requisitos de recursos más allá del dinero, como materiales o tiempo.
- Efectos especiales para actualizaciones, como efectos de partículas o retroalimentación de sonido.
Conclusión
Creamos un sistema de mejoras básico en Unity, que incluye aumentos dinámicos de atributos, una verificación de moneda sencilla y una interfaz de usuario para las mejoras. Este sistema proporciona una base para agregar mecánicas más complejas al juego, como mejoras de varias etapas y elementos visuales distintos para cada nivel.