Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengendalikan Perubahan Serialisasi dalam Sistem Simpan/Muat Unity Menggunakan JSON?

Bagaimanakah Saya Boleh Mengendalikan Perubahan Serialisasi dalam Sistem Simpan/Muat Unity Menggunakan JSON?

DDD
Lepaskan: 2025-01-04 22:50:41
asal
677 orang telah melayarinya

How Can I Handle Serialization Changes in Unity's Save/Load System Using JSON?

Mengendalikan Perubahan Pensirian dengan Sistem Simpan/Muat Unity

Walaupun kemudahan penyiaran Unity, ia menimbulkan cabaran apabila menambah pembolehubah pada kelas bersiri . Isu ini nyata sebagai ralat penyahserikatan apabila memuatkan versi lama fail bersiri, kerana pembolehubah baharu tidak wujud.

Menggunakan JSON sebagai Format Perantaraan

Untuk menangani masalah ini, kita boleh memanfaatkan JSON (JavaScript Object Notation) sebagai format data perantaraan. Dengan menukar kelas bersiri kepada JSON sebelum menyimpan dan kembali kepada objek semasa dimuatkan, kami boleh mengelakkan ralat penyahsirilan yang disebabkan oleh pembolehubah yang tiada.

Contoh Struktur Kelas

[Serializable]
public class Save
{
    public List<int> ID = new List<int>();
    public List<int> Amounts = new List<int>();
    public int extra = 0;
    public float highScore = 0;
}
Salin selepas log masuk

Menyimpan Data dengan JSON

void Save()
{
    Save saveData = new Save();
    saveData.extra = 99;
    saveData.highScore = 40;

    // Convert to JSON
    string jsonData = JsonUtility.ToJson(saveData);

    // Save JSON string
    PlayerPrefs.SetString("MySettings", jsonData);
    PlayerPrefs.Save();
}
Salin selepas log masuk

Memuatkan Data dengan JSON

void Load()
{
    // Load saved JSON
    string jsonData = PlayerPrefs.GetString("MySettings");

    // Convert to Class
    Save loadedData = JsonUtility.FromJson<Save>(jsonData);

    // Display saved data
    Debug.Log("Extra: " + loadedData.extra);
    Debug.Log("High Score: " + loadedData.highScore);

    for (int i = 0; i < loadedData.ID.Count; i++)
    {
        Debug.Log("ID: " + loadedData.ID[i]);
    }
    for (int i = 0; i < loadedData.Amounts.Count; i++)
    {
        Debug.Log("Amounts: " + loadedData.Amounts[i]);
    }
}
Salin selepas log masuk

Perbezaan antara JsonUtility.FromJson dan JsonUtility.FromJsonOverwrite

  • JsonUtility.FromJson: Mencipta objek baharu daripada JSON dan mengembalikannya, memperuntukkan memori.
  • JromsonUtility.Overwrite. : Menimpa objek yang diluluskan dengan data JSON, tidak mencipta sebarang objek baharu. Ini boleh menjimatkan memori dan mengurangkan penggunaan GC apabila melakukan pemindahan data yang kerap dengan JSON.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Perubahan Serialisasi dalam Sistem Simpan/Muat Unity Menggunakan JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan