Menu
CoddyTech

Resep Kerajinan

Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 63 dari 64.

challenge icon

Tantangan

Sulit

Berikan resep kepada CraftingBench.

  1. Tambahkan Ingredient yang dapat diserialisasi (public item, amount) dan Recipe (public result, List<Ingredient> needs), serta List<Recipe> recipes yang bersifat public.
  2. Di Start, recipeButtons[i] memanggil Craft(i).
  3. public void Craft(int index): jika semua bahan tersedia, hapus bahan-bahan itu, tambahkan satu hasil, lalu catat Crafted Axe.
  4. Refresh membuat tombol dapat diklik hanya jika resepnya dapat dibuat.

Tekan tombol “Main” dan buat rakit. Lalu tekan tombol “Periksa”.

Coba sendiri

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));
        // Resep: tombol resep i membuat resep i
        Refresh();
    }

    void Refresh()
    {
        // Resep: tombol resep hanya bisa diklik jika resepnya bisa dibuat
        inventoryText.text = "Inventory: " + inventory.Describe();
    }
}

Semua pelajaran di Arsitektur Game di Unity

Latihan sendiri: Playground Unity