Menu
CoddyTech

Revisão: banco de dados de itens

Parte da seção Arquitetura de jogos no Unity do Journey de Unity da Coddy. Lição 23 de 50.

challenge icon

Desafio

Médio

A loja do ferreiro vende itens de um banco de dados que todas as lojas do jogo compartilham. Escreva os dois tipos de assets e o Shop:

  • ItemData (em ItemData.cs): um ScriptableObject com uma entrada no menu Create e os campos públicos itemName (uma string) e price (um int).
  • ItemDatabase (em ItemDatabase.cs): um ScriptableObject com uma entrada no menu Create e um campo público, items, uma lista de ItemData.
  • Shop tem um campo público database do tipo ItemDatabase. itemText mostra o item selecionado como Iron Sword: 30 gold, começando pelo primeiro item, e goldText mostra o ouro como Gold: 50.
  • A seta para a direita seleciona o próximo item e, depois do último, volta ao primeiro; a seta para a esquerda segue na direção oposta, do primeiro item para o último.
  • A tecla Espaço compra o item selecionado. Se o jogador já tiver comprado o item, registra Already owned: Iron Sword. Se o item custar mais do que o ouro disponível, registra Not enough gold for Iron Sword. Caso contrário, o ouro diminui pelo preço, o item passa a ser propriedade do jogador, os textos são atualizados e o Console exibe Bought Iron Sword.
  • Mantenha no Shop o que foi comprado. Os assets permanecem como estão: o banco de dados é compartilhado, e, no Editor, uma alteração em um asset permanece após o modo Play.

O projeto tem quatro assets ItemData (Iron Sword 30, Oak Shield 20, Healing Potion 10, Long Bow 45), um asset Database que os lista nessa ordem, e o Inspector coloca o Database no campo database do Shop. Pressione Play, faça compras e, em seguida, Check.

Experimente você mesmo

using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;

public class Shop : MonoBehaviour
{
    public TMP_Text itemText;
    public TMP_Text goldText;
    public int gold = 50;

    // O campo do banco de dados, a navegação pelas setas e a compra com Space ficam aqui
}

Todas as lições de Arquitetura de jogos no Unity