Pilih dan Hapus Slot
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 34 dari 64.
Bab ini menulis penyimpanan sebagai JSON: class penyimpanan [System.Serializable], file di Application.persistentDataPath, dan inisialisasi field yang mengisi bagian yang tidak ada dalam penyimpanan lama. Menu slot kini mendapatkan dua kontrol terakhirnya.
Tantangan
SedangBiarkan pemain memilih slot dan menghapusnya.
- Di
Update(), tombol panah bawah menambahkan 1 keselecteddan tombol panah atas mengurangi nilainya sebanyak 1, dengan nilainya dibatasi dari 0 hingga 2 menggunakanMathf.MindanMathf.Max. Lalu panggilShow(). DeleteSelected()menghapus file slot yang dipilih denganFile.Delete, mengatur slot menjadinull, lalu memanggilShow().
Tekan tombol “Main”, isi slot 3, lalu klik tombol “Delete”: slot itu akan terbaca kosong. Lalu tekan tombol “Periksa”.
Coba sendiri
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()
{
// Tombol panah memilih 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();
}
}
// Tombol Delete memanggil ini
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;
}
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja BersamaRangkuman: Turret ModularRangkuman: Meriam Kembar4Data yang Diserialisasi
Class yang Dapat DiserialisasiList di InspectorEnum di InspectorRangkuman: Tabel LootRangkuman: Acak Loot2Antarmuka di Unity
IDamageableAntarmuka dan TryGetComponentGetComponentsRingkasan: Tombol InteractRingkasan: Terdekat dalam Jangkauan5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaSelamatkan AnginGelombang sebagai DataRekap: database ItemBeli dari Toko8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearestLatihan sendiri: Playground Unity