Menu
CoddyTech

Рецепты крафта

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 63 из 64.

challenge icon

Задание

Сложно

Добавь рецепты в CraftingBench.

  1. Добавь сериализуемые Ingredient (публичные item, amount) и Recipe (публичные result, List<Ingredient> needs), а также публичный List<Recipe> recipes.
  2. В Start кнопка recipeButtons[i] вызывает Craft(i).
  3. public void Craft(int index): если есть все необходимые предметы, удали их, добавь один предмет-результат и выведи в журнал Crafted Axe.
  4. Refresh делает кнопку доступной для нажатия, только если по её рецепту можно создать предмет.

Нажми «Играть» и создай плот. Затем нажми «Проверить».

Попробуйте сами

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));
        // Рецепты: кнопка рецепта i создаёт предмет по рецепту i
        Refresh();
    }

    void Refresh()
    {
        // Рецепты: кнопку рецепта можно нажать, только если по нему можно создать предмет
        inventoryText.text = "Inventory: " + inventory.Describe();
    }
}

Все уроки раздела Архитектура игр в Unity

Потренируйтесь самостоятельно: Песочница Unity