Menu
CoddyTech

Herstellungsrezepte

Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 63 von 64.

challenge icon

Aufgabe

Schwer

Gib CraftingBench seine Rezepte.

  1. Füge serialisierbare Ingredient (item und amount sind public) und Recipe (result ist public, List<Ingredient> needs) sowie ein public List<Recipe> recipes hinzu.
  2. In Start ruft recipeButtons[i] Craft(i) auf.
  3. public void Craft(int index): Wenn alle benötigten Zutaten vorhanden sind, entferne sie, füge ein Ergebnis hinzu und protokolliere Crafted Axe.
  4. Refresh macht eine Schaltfläche nur dann anklickbar, wenn das zugehörige Rezept hergestellt werden kann.

Drücke „Spielen“ und stelle ein Floß her. Drücke dann „Prüfen“.

Probier es selbst

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));
        // Rezepte: Rezept-Button i stellt Rezept i her
        Refresh();
    }

    void Refresh()
    {
        // Rezepte: Ein Rezept-Button ist nur anklickbar, wenn sein Rezept hergestellt werden kann
        inventoryText.text = "Inventory: " + inventory.Describe();
    }
}

Alle Lektionen in Spielarchitektur in Unity

Übe selbstständig: Unity-Playground