Menu
CoddyTech

Mesa de fabricación

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

En un juego de supervivencia, una mesa de fabricación convierte lo que recolectas en cosas que puedes usar. Dos botones permiten recolectar madera y piedra, y tres recetas las convierten en más cosas: dos unidades de madera hacen una tabla, una tabla y dos unidades de piedra hacen un hacha, y cuatro tablas hacen una balsa. El botón de una receta solo se puede pulsar mientras el inventario tenga todo lo que necesita la receta, y al fabricar se consumen esos recursos. Los datos de las recetas se rellenan en la mesa desde el Inspector, así que no hace falta código nuevo para añadir una receta. El inventario notifica cada cambio a quien esté escuchando y se guarda como JSON cada vez que cambia, así que al salir del juego no se pierde nada.

Se necesitan dos lecciones para crearlo. En esta se escribe el Inventory, en la Mochila; las recetas de la mesa vienen después.

challenge icon

Desafío

Difícil

Parte 1: completa Inventory; la recolección está lista.

  1. Añade ItemStack serializable (item y count públicos) y InventoryData (List<ItemStack> stacks público).
  2. Completa Count, Add, Remove (una pila se elimina al llegar a 0) y Describe: Wood 3, Plank 1 o empty.
  3. Cada cambio guarda los datos en inventory.json, dentro de Application.persistentDataPath, y activa Changed; Awake los carga.

Pulsa «Jugar», recolecta y vuelve a jugar: la madera sigue ahí. Después, pulsa «Comprobar».

Pruébalo tú mismo

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

// ItemStack e InventoryData van aquí

public class Inventory : MonoBehaviour
{
    public event Action Changed;

    void Awake()
    {
        // Carga inventory.json si existe
    }

    public int Count(string item)
    {
        return 0;
    }

    public void Add(string item, int amount)
    {
    }

    public void Remove(string item, int amount)
    {
    }

    public string Describe()
    {
        return "empty";
    }
}

Todas las lecciones de Arquitectura de juegos en Unity

Practica por tu cuenta: Playground de Unity