Cara Kerja Bawaan dengan JSON dalam Kode Unity

JSON (JavaScript Object Notation) adalah format pertukaran data yang banyak digunakan, dan mengintegrasikannya ke dalam Unity dapat berguna untuk menangani konfigurasi, menyimpan progres game, atau bertukar data dengan layanan eksternal. Panduan ini memandu Anda memahami dasar-dasar bekerja dengan JSON di Unity.

Langkah 1: Memahami JSON

JSON terdiri dari pasangan nilai kunci dan struktur bersarang.

Langkah 2: Bekerja dengan JSON dalam Kode Unity

Unity menyederhanakan serialisasi dan deserialisasi JSON melalui kelas 'JsonUtility'. Panduan ini menunjukkan langkah-langkah dasar untuk bekerja dengan JSON di Unity tanpa perpustakaan eksternal.

  • Buat Struktur JSON:
{
  "playerName": "John Doe",
  "playerLevel": 5,
  "inventory": ["sword", "shield"]
}
  • Serialisasi - Mengonversi Objek C# ke JSON:
using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int playerLevel;
    public string[] inventory;
}

public class SerializationExample : MonoBehaviour
{
    void Start()
    {
        PlayerData playerData = new PlayerData
        {
            playerName = "John Doe",
            playerLevel = 5,
            inventory = new string[] { "sword", "shield" }
        };

        string json = JsonUtility.ToJson(playerData);
        Debug.Log(json);
    }
}
  • Deserialisasi - Mengonversi JSON ke Objek C#:
using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int playerLevel;
    public string[] inventory;
}

public class DeserializationExample : MonoBehaviour
{
    void Start()
    {
        string jsonData = "{\"playerName\":\"John Doe\",\"playerLevel\":5,\"inventory\":[\"sword\",\"shield\"]}";
        PlayerData playerData = JsonUtility.FromJson<PlayerData>(jsonData);

        Debug.Log($"Name: {playerData.playerName}, Level: {playerData.playerLevel}");
        Debug.Log("Inventory: " + string.Join(", ", playerData.inventory));
    }
}

Keterbatasan yang Diketahui

'JsonUtility' tidak secara langsung mendukung serialisasi dan deserialisasi array objek tingkat atas (misalnya, '[{},{},{}]') tanpa kelas pembungkus. Untuk mengatasinya, Anda bisa menggunakan kelas pembantu untuk membungkus array. Berikut ini contohnya:

using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int playerLevel;
}

[System.Serializable]
public class PlayerDataArrayWrapper
{
    public PlayerData[] players;
}

public class TopLevelArrayExample : MonoBehaviour
{
    void Start()
    {
        // Serialization: Converting C# Object Array to JSON
        PlayerData[] players = new PlayerData[]
        {
            new PlayerData { playerName = "John Doe", playerLevel = 5 },
            new PlayerData { playerName = "Jane Smith", playerLevel = 8 }
        };

        PlayerDataArrayWrapper wrapper = new PlayerDataArrayWrapper { players = players };
        string json = JsonUtility.ToJson(wrapper);
        Debug.Log(json);

        // Deserialization: Converting JSON to C# Object Array
        string jsonData = "{\"players\":[{\"playerName\":\"John Doe\",\"playerLevel\":5},{\"playerName\":\"Jane Smith\",\"playerLevel\":8}]}";
        PlayerDataArrayWrapper deserializedData = JsonUtility.FromJson<PlayerDataArrayWrapper>(jsonData);

        foreach (var player in deserializedData.players)
        {
            Debug.Log($"Name: {player.playerName}, Level: {player.playerLevel}");
        }
    }
}

Pada contoh di atas, kelas 'PlayerDataArrayWrapper' digunakan untuk membungkus array saat membuat serialisasi dan deserialisasi. Merupakan praktik umum untuk membuat kelas pembungkus seperti itu ketika menangani array objek tingkat atas di 'JsonUtility'.

Kesimpulan

'JsonUtility' menyederhanakan serialisasi dan deserialisasi JSON secara langsung tanpa perpustakaan eksternal. Gunakan pendekatan asli ini untuk operasi JSON langsung di proyek Unity.

Artikel yang Disarankan
Membuat Pernyataan Bersyarat (if-else) dalam Kode Unity
Panduan Perilaku Mono dalam Kesatuan
Cuplikan Kode Berguna Teratas untuk Pengembang Unity
Membuat Game Terinspirasi Pac-Man di Unity
Rotasi Di Tempat dalam Kesatuan
Menciptakan Bazooka dalam Persatuan
Logika Penembakan Flare Gun dalam Kesatuan