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.
Sfida
DifficileParte 1: completa Inventory; la raccolta è pronta.
- Aggiungi
ItemStackserializzabile (itemecountpubblici) eInventoryData(List<ItemStack> stackspubblico). - Completa
Count,Add,Remove(uno stack viene rimosso quando arriva a 0) eDescribe:Wood 3, Plank 1oppureempty. - Ogni modifica salva
inventory.jsoninApplication.persistentDataPathe genera l'eventoChanged;Awakelo 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
1Componenti, non gerarchie
Componenti piccoliUno script base per i nemiciComponenti astrattiComponenti che collaboranoRipasso: torretta modulareRipasso: cannone doppio4Dati serializzati
Classi serializzabiliElenchi nell'InspectorEnum nell'InspectorRiepilogo: tabella del bottinoRiepilogo: tira il bottino2Interfacce in Unity
IDamageableInterfacce e TryGetComponentGetComponentsRiepilogo: tasto InteragisciRiepilogo: il più vicino a portata5ScriptableObjects
Asset di datiStatistiche delle armiImpostazioni condiviseSalva il ventoOnde come datiRiepilogo: database degli oggettiRiepilogo: comprare dal negozioEsercitati da solo: Playground Unity