Recetas de fabricación
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 63 de 64.
Desafío
DifícilAsigna sus recetas a CraftingBench.
- Añade
Ingredientserializable (conitemyamountpúblicos) yRecipe(conresultpúblico yList<Ingredient> needs), además de unList<Recipe> recipespúblico. - En
Start,recipeButtons[i]llama aCraft(i). public void Craft(int index): si se dispone de todo lo necesario, elimínalo, añade un resultado y registraCrafted Axe.Refreshhace que un botón se pueda pulsar solo cuando se puede fabricar su receta.
Pulsa «Jugar» y fabrica una balsa. Después, pulsa «Comprobar».
Pruébalo tú mismo
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class CraftingBench : MonoBehaviour
{
[SerializeField] private Inventory inventory;
[SerializeField] private Button[] recipeButtons;
[SerializeField] private Button woodButton;
[SerializeField] private Button stoneButton;
[SerializeField] private TMP_Text inventoryText;
void OnEnable()
{
inventory.Changed += Refresh;
}
void OnDisable()
{
inventory.Changed -= Refresh;
}
void Start()
{
woodButton.onClick.AddListener(() => inventory.Add("Wood", 1));
stoneButton.onClick.AddListener(() => inventory.Add("Stone", 1));
// Recetas: el botón de la receta i elabora la receta i
Refresh();
}
void Refresh()
{
// Recetas: un botón de receta solo se puede pulsar cuando su receta se puede elaborar
inventoryText.text = "Inventory: " + inventory.Describe();
}
}
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