Menu
CoddyTech

اختر خانة واحذفها

جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 34 من 64.

كتب هذا الفصل ملفات الحفظ بصيغة JSON: فئة حفظ [System.Serializable]، وملفات في Application.persistentDataPath، ومهيئات الحقول التي تملأ ما ينقص ملف الحفظ القديم. أصبحت قائمة الخانات تضم الآن عنصري التحكم الأخيرين.

challenge icon

التحدي

متوسط

دع اللاعب يختار خانة ويحذفها.

  1. في Update()، يضيف سهم الأسفل 1 إلى selected ويطرح سهم الأعلى 1، مع إبقاء القيمة بين 0 و2 باستخدام Mathf.Min وMathf.Max. ثم استدعِ Show().
  2. تحذف DeleteSelected() ملف الخانة المحددة باستخدام File.Delete، وتعيّن الخانة إلى null، ثم تستدعي Show().

اضغط على «العب»، واملأ الخانة 3، ثم انقر على Delete: ستظهر فارغة. ثم اضغط على «تحقق».

جرّب بنفسك

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()
    {
        // تختار الأسهم خانةً
        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();
        }
    }

    // يستدعي زر Delete هذا
    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 iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس هندسة الألعاب في Unity

تدرّب بنفسك: Playground لـ Unity