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.
Desafio
MédioA 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úblicositemName(uma string) eprice(um int).ItemDatabase(em ItemDatabase.cs): um ScriptableObject com uma entrada no menu Create e um campo público,items, uma lista de ItemData.Shoptem um campo públicodatabasedo tipo ItemDatabase.itemTextmostra o item selecionado comoIron Sword: 30 gold, começando pelo primeiro item, egoldTextmostra o ouro comoGold: 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, registraNot 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 exibeBought 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
1Componentes, não hierarquias
Componentes pequenosUm script-base para inimigosComponentes abstratosComponentes trabalhando juntosRevisão: Torre modular4Dados Serializados
Classes SerializáveisListas no InspectorEnums no InspectorRevisão: Tabela de Loot7Máquinas de Estados
Estados como ClassesUma Máquina de EstadosTransiçõesInteligências dos InimigosRevisão: Estados da Porta10Projeto: Sobrevivente da Arena
O HeróiTipos de Inimigos5ScriptableObjects
Assets de dadosAtributos das armasConfigurações compartilhadasOndas como dadosRevisão: banco de dados de itens