JsonUtility
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 30 dari 64.
JSON adalah teks yang menyimpan nilai sebuah objek, sehingga teks ini dapat dicatat, dikirim, atau ditulis ke file. JsonUtility.ToJson(obj) mengubah objek menjadi JSON dan JsonUtility.FromJson<T>(json) membuat T baru darinya. JsonUtility mengikuti aturan yang digunakan Inspector, sehingga dapat digunakan pada class [System.Serializable]:
[System.Serializable]
public class PlayerProfile
{
public string playerName = "Ana";
public int level = 7;
public List<string> badges = new List<string> { "Explorer", "Sharpshooter" };
[SerializeField] private float hoursPlayed = 12.5f;
private int secretCode = 1234;
public int Rank { get; set; } = 3;
}string json = JsonUtility.ToJson(new PlayerProfile());
// {"playerName":"Ana","level":7,"badges":["Explorer","Sharpshooter"],"hoursPlayed":12.5}
PlayerProfile copy = JsonUtility.FromJson<PlayerProfile>(json);secretCode dan Rank tidak disertakan. JsonUtility menulis field publik dan field privat yang diberi tanda [SerializeField], dan tidak menulis yang lain: tidak ada property, field statis, atau field privat biasa. Field Dictionary juga dilewati, begitu pula field yang class-nya tidak memiliki [System.Serializable]. Inspector juga tidak menyertakan field-field tersebut. JsonUtility.ToJson(obj, true) menulis JSON yang sama dalam beberapa baris agar lebih mudah dibaca.
List di dalam class akan ditulis, seperti badges. List yang berdiri sendiri tidak akan ditulis: JsonUtility memerlukan objek di bagian teratas, jadi JsonUtility.ToJson(scores) untuk List<int> berisi 10, 20, dan 30 menghasilkan {}. Masukkan list ke dalam class lalu ubah class itu. ScoreBoard yang menyimpan list yang sama akan ditulis sebagai {"scores":[10,20,30]}:
[System.Serializable]
public class ScoreBoard
{
public List<int> scores;
}Tantangan
SedangBagikan tim sebagai kode JSON.
- Di
CharacterBuild, jadikanStrengthsebuah field,public int strength;, dan tandaiagilitydengan[SerializeField]. - Di bawahnya, tulis class
Teamdengan[System.Serializable]danpublic List<CharacterBuild> heroes;. DiTeamCode, jadikan list-nyapublic Team team;dan catat JSON-nya. LoadCodemembacacodeke dalamteamdan mencatatLoaded 3 heroes.
Tekan tombol “Main” dan tekan Space: tim akan ditampilkan sebagai JSON. Lalu tekan tombol “Periksa”.
Coba sendiri
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class CharacterBuild
{
public string hero;
public int Strength { get; set; }
private int agility;
}
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja BersamaRangkuman: Turret ModularRangkuman: Meriam Kembar4Data yang Diserialisasi
Class yang Dapat DiserialisasiList di InspectorEnum di InspectorRangkuman: Tabel LootRangkuman: Acak Loot2Antarmuka di Unity
IDamageableAntarmuka dan TryGetComponentGetComponentsRingkasan: Tombol InteractRingkasan: Terdekat dalam Jangkauan5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaSelamatkan AnginGelombang sebagai DataRekap: database ItemBeli dari Toko8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearestLatihan sendiri: Playground Unity