Sistema de atualização de base no Unity
Em muitos jogos, os jogadores podem atualizar uma base ou edifício para desbloquear recursos adicionais, melhorar a defesa ou aumentar as taxas de produção. Este tutorial o guiará pela configuração de um sistema de atualização de base em Unity, permitindo que um edifício seja atualizado para vários níveis com mudanças visuais e funcionais em cada nível.
1. Configurando a estrutura base
Primeiro, crie um script Base
que defina as propriedades da sua base, como seu nível, saúde e taxa de produção. Cada atualização de nível modificará esses 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
inclui um método simples UpgradeBase()
que incrementa o nível e atualiza os atributos da base. Anexe este script ao GameObject base na cena.
2. Criando um gerenciador de atualização
Em seguida, crie um script UpgradeManager
que gerencie as atualizações básicas, incluindo a verificação se o jogador tem moeda suficiente para atualizar.
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.");
}
}
}
Anexe este script UpgradeManager
a um GameObject, atribua o GameObject base ao seu campo playerBase
e defina o upgradeCost
inicial. Cada atualização aumenta o custo, tornando as atualizações futuras mais desafiadoras.
3. Configurando um sistema monetário
Para gerenciar os custos de atualização, adicione um CurrencySystem
como uma maneira simples de rastrear e gastar a moeda do jogador. Aqui está um exemplo:
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);
}
}
Anexe este CurrencySystem
a um GameObject na cena. O padrão singleton permite acesso fácil de outros scripts, como o UpgradeManager
.
4. Atualizando visuais e efeitos por nível
Para tornar cada atualização de base visualmente distinta, adicione variações para cada nível, como modelos ou texturas diferentes. Por exemplo:
- Crie vários modelos 3D para cada nível base ou prepare diferentes texturas/materiais.
- Adicione código na classe
Base
para trocar modelos ou materiais sempre que o nível for aumentado.
Aqui está um trecho de código para atualizar visuais no 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 ativará o modelo que corresponde ao nível atual da base e desativará os outros.
5. Criando uma IU para atualizações
Em seguida, crie elementos de UI para permitir que o jogador inicie atualizações e rastreie o nível atual da base. Para fazer isso:
- Crie um Canvas com um botão rotulado "Upgrade Base".
- Anexe um evento
OnClick
a este botão, vinculando-o ao métodoAttemptUpgrade
doUpgradeManager
. - Exiba o nível, a saúde e a taxa de produção da base na interface do usuário para dar aos jogadores feedback sobre o progresso da atualização.
6. Testando o sistema de atualização
Execute o jogo e clique no botão "Upgrade Base". Com cada atualização, os atributos da base devem aumentar, e os visuais devem mudar de acordo. Use o log de Debug para verificar as alterações de moeda e ajustes de nível.
Expandindo o Sistema
Este sistema de atualização básico pode ser expandido adicionando:
- Novos níveis com atributos distintos e melhorias visuais.
- Requisitos de recursos além da moeda, como materiais ou tempo.
- Efeitos especiais para atualizações, como efeitos de partículas ou feedback sonoro.
Conclusão
Criamos um sistema de atualização base em Unity, apresentando aumentos dinâmicos de atributos, uma verificação de moeda simples e UI para atualizações. Este sistema fornece uma base para adicionar mecânicas mais complexas em seu jogo, como atualizações de vários estágios e visuais distintos para cada nível.