📜  unity 保存列表到 json - C# (1)

📅  最后修改于: 2023-12-03 14:48:12.382000             🧑  作者: Mango

Unity 保存列表到 JSON - C#

在 Unity 游戏开发中,我们经常需要将程序中的数据以 JSON 的格式保存下来,以便之后可以重新加载这些数据。本篇教程将会为大家讲解如何在 Unity 中将列表数据保存为 JSON 格式,并提供相应的代码示例。

序列化和反序列化

在将 Unity 中的数据保存为 JSON 格式时,我们需要使用到序列化和反序列化的方法。序列化是将对象转换为字符串格式,而反序列化是将字符串格式转换为对象类型。在 Unity 中,我们可以使用 JsonUtility 类来进行序列化和反序列化操作。

// 序列化为 JSON 格式
string json = JsonUtility.ToJson(obj);

// 反序列化为对象
Object obj = JsonUtility.FromJson<Object>(json);
将列表数据保存为 JSON 格式

我们假设我们有以下数据结构:

[System.Serializable]
public class Item
{
    public string name;
    public int count;
}

[System.Serializable]
public class Inventory
{
    public List<Item> itemList;
}

要将 Inventory 类中的 itemList 保存为 JSON 格式,我们可以使用以下方法:

Inventory inventory = new Inventory();
inventory.itemList = new List<Item>();

// 将数据添加到列表中
Item item1 = new Item();
item1.name = "apple";
item1.count = 10;
inventory.itemList.Add(item1);

Item item2 = new Item();
item2.name = "banana";
item2.count = 8;
inventory.itemList.Add(item2);

// 将列表保存为 JSON 格式
string json = JsonUtility.ToJson(inventory);

最终得到的 json 字符串会长这样:

{
    "itemList": [
        {
            "name": "apple",
            "count": 10
        },
        {
            "name": "banana",
            "count": 8
        }
    ]
}
将 JSON 格式数据转换为列表

同样地,我们可以将 JSON 格式的字符串转换为列表类型:

Inventory inventory = JsonUtility.FromJson<Inventory>(json);

从上面的代码中可以看到,我们先将 json 字符串反序列化为 Inventory 类型,在 Inventory 对象中我们就可以获取到 itemList 列表,然后就可以从列表中得到相应的数据了。

总结

在本篇教程中,我们学习了如何将列表数据保存为 JSON 格式,并将 JSON 格式的字符串转换为列表类型。这对于 Unity 游戏开发者来说是非常有用的技能,因为在游戏开发中我们需要保存和加载大量的游戏数据。希望这篇教程对大家有所帮助。