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

تدرّب بنفسك: Playground لـ Unity