Menu
CoddyTech

クラフトレシピ

CoddyのUnityジャーニー「Unityのゲームアーキテクチャ」セクションの一部。レッスン 63/64。

challenge icon

チャレンジ

難しい

CraftingBench にレシピを設定しましょう。

  1. シリアライズ可能な Ingredient(public item、amount)と Recipe(public result、List<Ingredient> needs)、および public List<Recipe> recipes を追加します。
  2. Start で、recipeButtons[i] が Craft(i) を呼び出すようにします。
  3. public void Craft(int index):必要な素材がすべてそろっている場合、それらを取り除き、結果を1つ追加し、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プレイグラウンド