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; }
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(); }
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]); } }
Perbezaan antara JsonUtility.FromJson dan JsonUtility.FromJsonOverwrite
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!