Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Biarkan pemain memilih slot dan menghapusnya.

  1. Di Update(), tombol panah bawah menambahkan 1 ke selected dan tombol panah atas mengurangi nilainya sebanyak 1, dengan nilainya dibatasi dari 0 hingga 2 menggunakan Mathf.Min dan Mathf.Max. Lalu panggil Show().
  2. DeleteSelected() menghapus file slot yang dipilih dengan File.Delete, mengatur slot menjadi null, lalu memanggil Show().

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;
        }
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Arsitektur Game di Unity

Latihan sendiri: Playground Unity