Рецепты крафта
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 63 из 64.
Задание
СложноДобавь рецепты в CraftingBench.
- Добавь сериализуемые
Ingredient(публичныеitem,amount) иRecipe(публичныеresult,List<Ingredient> needs), а также публичныйList<Recipe> recipes. - В
StartкнопкаrecipeButtons[i]вызываетCraft(i). public void Craft(int index): если есть все необходимые предметы, удали их, добавь один предмет-результат и выведи в журналCrafted Axe.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
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыКомпоненты работают вместеПовторение: модульная турельПовторение: спаренная пушка4Сериализованные данные
Сериализуемые классыСписки в инспектореПеречисления в инспектореПовторение: таблица добычиПовторение: определяем добычу2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействияПовторение: ближайший в пределах досягаемости5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиСохраняем ветерВолны как данныеПовторение: база предметовПовторение: покупка в магазинеПотренируйтесь самостоятельно: Песочница Unity