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.
Desafío
DifícilParte 1: completa Inventory; la recolección está lista.
- Añade
ItemStackserializable (itemycountpúblicos) yInventoryData(List<ItemStack> stackspúblico). - Completa
Count,Add,Remove(una pila se elimina al llegar a 0) yDescribe:Wood 3, Plank 1oempty. - Cada cambio guarda los datos en
inventory.json, dentro deApplication.persistentDataPath, y activaChanged;Awakelos 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
1Componentes, no jerarquías
Componentes pequeñosUn script base para enemigosComponentes abstractosComponentes que trabajan juntosRepaso: torreta modularRepaso: cañón doble4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botínRepaso: sortear el botín2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: Tecla de interacciónRepaso: El más cercano al alcance5ScriptableObjects
Activos de datosEstadísticas de armasConfiguración compartidaGuardar el vientoOleadas como datosRepaso: base de datos de objetosRepaso: comprar en la tienda8Código reutilizable
Métodos de extensiónUn singleton genéricoFunciones auxiliares genéricasRepaso: FindNearest11Desafíos finales
Defensa de torres básicaMesa de fabricaciónRecetas de fabricaciónCombate contra el jefe3Eventos
Eventos de C# en UnitySuscribirse en OnEnableCampos UnityEventLos eventos controlan la interfazRepaso: ventana emergente de logrosRepaso: temporizador de la ventana emergentePractica por tu cuenta: Playground de Unity