Scegli ed elimina uno slot
Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 34 di 64.
Questo capitolo ha scritto i salvataggi in JSON: una classe di salvataggio [System.Serializable], file in Application.persistentDataPath e inizializzatori di campo che inseriscono ciò che manca a un vecchio salvataggio. Ora al menu degli slot vengono aggiunti gli ultimi due controlli.
Sfida
MedioConsenti al giocatore di scegliere uno slot ed eliminarlo.
- In
Update(), la freccia giù aggiunge 1 aselectede la freccia su sottrae 1, mantenendo il valore tra 0 e 2 conMathf.MineMathf.Max. Poi chiamaShow(). DeleteSelected()elimina il file dello slot selezionato conFile.Delete, imposta lo slot sunulle chiamaShow().
Premi «Gioca», riempi lo slot 3 e fai clic su Delete: risulta vuoto. Poi premi «Verifica».
Provalo tu
using System.IO;
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
public class SlotMenu : MonoBehaviour
{
public TMP_Text[] slotTexts;
private SlotSave[] slots = new SlotSave[3];
private int selected;
void Start()
{
for (int i = 0; i < slots.Length; i++)
{
if (File.Exists(PathFor(i)))
{
slots[i] = JsonUtility.FromJson<SlotSave>(File.ReadAllText(PathFor(i)));
}
}
Show();
}
void Update()
{
// Le frecce selezionano uno slot
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
if (slots[selected] == null)
{
slots[selected] = new SlotSave();
}
else
{
slots[selected].day++;
slots[selected].gold += 15;
}
File.WriteAllText(PathFor(selected), JsonUtility.ToJson(slots[selected]));
Show();
}
}
// Il pulsante Delete richiama questo metodo
public void DeleteSelected()
{
}
string PathFor(int index)
{
return Path.Combine(Application.persistentDataPath, "slot" + (index + 1) + ".json");
}
void Show()
{
for (int i = 0; i < slots.Length; i++)
{
string line = "Slot " + (i + 1) + ": ";
if (slots[i] == null)
{
line += "empty";
}
else
{
line += "Day " + slots[i].day + ", " + slots[i].gold + " gold";
}
if (i == selected)
{
line = "> " + line;
}
slotTexts[i].text = line;
}
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
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