Menu
CoddyTech

制作配方

本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 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 在线编辑器