Menu
CoddyTech

Banco da lavoro

Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 62 di 64.

In un gioco di sopravvivenza, un banco da lavoro trasforma ciò che raccogli in oggetti che puoi usare. Due pulsanti permettono di raccogliere legno e pietra, e tre ricette li trasformano in altro: due unità di legno diventano una tavola, una tavola e due unità di pietra diventano un'ascia, quattro tavole diventano una zattera. Il pulsante di una ricetta può essere premuto solo se l'inventario contiene tutto ciò che serve per realizzarla, e la creazione consuma quei materiali. Le ricette sono dati inseriti nel banco dall'Inspector, quindi per aggiungere una nuova ricetta non serve scrivere altro codice. L'inventario annuncia ogni modifica a chiunque sia in ascolto e viene salvato in formato JSON ogni volta che cambia, così non perdi nulla quando esci dal gioco.

Per realizzarlo servono due lezioni. In questa si scrive Inventory, nello zaino; le ricette del banco vengono dopo.

challenge icon

Sfida

Difficile

Parte 1: completa Inventory; la raccolta è pronta.

  1. Aggiungi ItemStack serializzabile (item e count pubblici) e InventoryData (List<ItemStack> stacks pubblico).
  2. Completa Count, Add, Remove (uno stack viene rimosso quando arriva a 0) e Describe: Wood 3, Plank 1 oppure empty.
  3. Ogni modifica salva inventory.json in Application.persistentDataPath e genera l'evento Changed; Awake lo carica.

Premi «Gioca», raccogli, poi gioca di nuovo: il legno è tornato. Poi premi «Verifica».

Provalo tu

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

// ItemStack e InventoryData vanno qui

public class Inventory : MonoBehaviour
{
    public event Action Changed;

    void Awake()
    {
        // Carica inventory.json se esiste
    }

    public int Count(string item)
    {
        return 0;
    }

    public void Add(string item, int amount)
    {
    }

    public void Remove(string item, int amount)
    {
    }

    public string Describe()
    {
        return "empty";
    }
}

Tutte le lezioni di Architettura dei giochi in Unity

Esercitati da solo: Playground Unity