Bir Yuva Seçme ve Silme
Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 34 / 64.
Bu bölüm, kayıtları JSON olarak yazdı: [System.Serializable] bir kayıt sınıfı, Application.persistentDataPath içindeki dosyalar ve eski bir kayıtta eksik olanları dolduran alan başlatıcıları. Yuva menüsü artık son iki kontrolünü de alıyor.
Görev
OrtaOyuncunun bir kayıt yuvası seçip silmesini sağla.
Update()içinde aşağı ok,selecteddeğerini 1 artırır; yukarı ok ise 1 azaltır.Mathf.MinveMathf.Maxile değer 0 ile 2 arasında tutulur. ArdındanShow()çağrılır.DeleteSelected(), seçili yuvanın dosyasınıFile.Deleteile siler, yuvayınullolarak ayarlar veShow()çağrısı yapar.
“Oyna” düğmesine bas, 3. yuvayı doldur ve “Delete” düğmesine tıkla: yuva boş görünür. Ardından “Kontrol et” düğmesine bas.
Kendin dene
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()
{
// Ok tuşları bir kayıt yuvası seçer
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 düğmesi bunu çağırır
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;
}
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Unity'de Oyun Mimarisi bölümündeki tüm dersler
1Kalıtım Değil, Bileşenler
Küçük BileşenlerTemel Düşman Script'iSoyut BileşenlerBirlikte Çalışan BileşenlerTekrar: Modüler TaretTekrar: Çift Namlulu Top4Serileştirilmiş Veriler
Serileştirilebilir SınıflarInspector'da ListelerInspector'da Enum'larTekrar: Ganimet TablosuTekrar: Ganimeti At2Unity'de Arayüzler
IDamageableArayüzler ve TryGetComponentGetComponentsÖzet: Etkileşim TuşuÖzet: Erişim Mesafesindeki En Yakın5ScriptableObjects
Veri VarlıklarıSilah İstatistikleriOrtak AyarlarRüzgârı KaydetVeri Olarak DalgalarTekrar: Eşya VeritabanıTekrar: Dükkândan Satın Al8Yeniden Kullanılabilir Kod
Genişletme MetotlarıGeneric SingletonGeneric YardımcılarTekrar: FindNearestKendi başına pratik yap: Unity playground