Menu
CoddyTech

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.

challenge icon

Desafío

Difícil

Asigna sus recetas a CraftingBench.

  1. Añade Ingredient serializable (con item y amount públicos) y Recipe (con result público y List<Ingredient> needs), además de un List<Recipe> recipes público.
  2. En Start, recipeButtons[i] llama a Craft(i).
  3. public void Craft(int index): si se dispone de todo lo necesario, elimínalo, añade un resultado y registra Crafted Axe.
  4. Refresh hace 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

Practica por tu cuenta: Playground de Unity