בחירה ומחיקה של משבצת
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 34 מתוך 64.
הפרק הזה כתב שמירות בפורמט JSON: מחלקת שמירה מסוג [System.Serializable], קבצים בנתיב Application.persistentDataPath, ומאתחלי שדות שמשלימים את מה שחסר בשמירה ישנה. עכשיו תפריט המשבצות מקבל את שני הפקדים האחרונים שלו.
אתגר
בינוניתן לשחקן לבחור משבצת ולמחוק אותה.
- ב־
Update(), החץ למטה מוסיף 1 ל־selectedוהחץ למעלה מפחית 1, תוך שמירה על הערך בין 0 ל־2 באמצעותMathf.Minו־Mathf.Max. לאחר מכן קוראים ל־Show(). 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;
}
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיסי לאויברכיבים מופשטיםרכיבים שפועלים יחדחזרה: צריח מודולריחזרה: תותח כפול4נתונים שעברו סריאליזציה
מחלקות שניתנות לסריאליזציהרשימות ב־Inspectorטיפוסי Enum ב־Inspectorחזרה: טבלת שללהגרלת השלל2ממשקים ב-Unity
IDamageableממשקים ו-TryGetComponentGetComponentsסיכום: מקש אינטראקציהסיכום: הקרוב ביותר בטווח3אירועים
אירועי C# ב-Unityהרשמה ב-OnEnableשדות UnityEventאירועים מניעים את ממשק המשתמשחזרה: חלון קופץ להישגחזרה: טיימר החלון הקופץ6שמירה באמצעות JSON
JsonUtilityשמירת המשחקטעינה וערכי ברירת מחדלחזרה: משבצות שמירהבחירה ומחיקה של משבצתתרגלו בעצמכם: Unity אונליין