Menu
CoddyTech

Repaso: comprar en la tienda

Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 29 de 64.

Este capítulo trasladó los datos a recursos que comparten muchos objetos. Los artículos de la tienda son ese tipo de recursos, así que lo que compra el jugador pertenece a Shop, nunca a ellos.

challenge icon

Desafío

Fácil

Haz que la barra espaciadora compre el objeto seleccionado sin modificar los recursos.

  1. Guarda los objetos comprados en List<ItemData> owned en la tienda.
  2. Al pulsar la barra espaciadora, si el objeto ya se tiene, registra Already owned: Iron Sword; si cuesta más que gold, registra Not enough gold for Iron Sword.
  3. De lo contrario, resta el precio de gold, añádelo a owned, registra Bought Iron Sword y actualiza los textos.

Pulsa «Jugar» y compra el arco largo. Después, pulsa «Comprobar».

Pruébalo tú mismo

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;

public class Shop : MonoBehaviour
{
    public ItemDatabase database;
    public TMP_Text itemText;
    public TMP_Text goldText;
    public int gold = 50;
    private int index;

    void Start()
    {
        Show();
    }

    void Update()
    {
        if (Keyboard.current.rightArrowKey.wasPressedThisFrame)
        {
            index = (index + 1) % database.items.Count;
            Show();
        }
        if (Keyboard.current.leftArrowKey.wasPressedThisFrame)
        {
            index = (index - 1 + database.items.Count) % database.items.Count;
            Show();
        }
        // Space: compra el objeto seleccionado
    }

    void Show()
    {
        ItemData item = database.items[index];
        itemText.text = item.itemName + ": " + item.price + " gold";
        goldText.text = "Gold: " + gold;
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Arquitectura de juegos en Unity

Practica por tu cuenta: Playground de Unity