Herstellungsrezepte
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 63 von 64.
Aufgabe
SchwerGib CraftingBench seine Rezepte.
- Füge serialisierbare
Ingredient(itemundamountsind public) undRecipe(resultist public,List<Ingredient> needs) sowie ein publicList<Recipe> recipeshinzu. - In
StartruftrecipeButtons[i]Craft(i)auf. public void Craft(int index): Wenn alle benötigten Zutaten vorhanden sind, entferne sie, füge ein Ergebnis hinzu und protokolliereCrafted Axe.Refreshmacht 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
1Komponenten statt Hierarchien
Kleine KomponentenEin Basis-GegnerskriptAbstrakte KomponentenZusammenwirkende KomponentenRückblick: Modulares GeschützRückblick: Zwillingskanone4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-TabelleRückblick: Beute auswürfeln2Schnittstellen in Unity
IDamageableSchnittstellen und TryGetComponentGetComponentsZusammenfassung: InteraktionstasteZusammenfassung: Nächstes in Reichweite5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenDen Wind speichernWellen als DatenRückblick: Item-DatenbankRückblick: Im Shop einkaufen8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearestÜbe selbstständig: Unity-Playground