【发布时间】:2017-04-10 06:12:57
【问题描述】:
我正在尝试使用 UnityEngine.JsonUtility 从文件中反序列化我的 json 项目。它工作正常,但我的枚举类型没有得到正确转换。我尝试使用 EnumMember 属性,但仍然没有运气。
我该如何解决这个问题?
注意
我正在使用this 解决方案来读取多个文件并将它们存储在数组中。
[Serializable]
public class EquipementItem
{
public enum ItemTypes
{
None,
Armor,
Weapon
}
public enum SlotTypes
{
Head,
Shoulders,
Chest,
Bracers,
Gloves,
Waist,
Legs,
Boots,
Weapon
}
public int ID;
public string Name;
public ItemTypes ItemType;
public SlotTypes SlotType;
}
还有json文件
{
"Items": [
{
"ID": "1",
"Name": "Basic Sword",
"ItemType": "Weapon",
"SlotType": "Weapon"
},
{
"ID": "2",
"Name": "Advanced Sword",
"ItemType": "Weapon",
"SlotType": "Weapon"
},
{
"ID": "3",
"Name": "Leather Chest",
"ItemType": "Armor",
"SlotType": "Chest"
}
]}
这是我加载 json 文件的类:
public class Items : MonoBehaviour
{
public static EquipementItem[] EquipableItems;
private void Awake()
{
string jsonFile = File.ReadAllText(Application.dataPath + "/Scripts/Databases/EquipableItemsDB.json");
EquipableItems = JsonHelper.FromJson<EquipementItem>(jsonFile);
}
}
【问题讨论】:
-
枚举是下面的整数。您是否尝试过将 JSON 中的“ItemType”设置为 1,将“SlotType”设置为 2?
-
输入 json 和模型在那里,但我看不到 你的代码
-
你能把这个作为答案发布吗?成功了!
-
@L.B 你还需要什么?我注意到我正在使用链接答案中显示的解决方案我正在阅读 json,就像它在那里完成的一样
JsonHelper.FromJson<EquipementItem>(jsonString);这几乎是整个项目,因为这只是一个测试。 -
@mashinkata 当我在一个问题中测试一个代码时,我想要的只是一个可以复制和粘贴的代码......见How to create a Minimal, Complete, and Verifiable example