Насколько я могу судить, я могу успешно сериализовать и сохранить данные в формате XML UTF-8, но я не могу десериализовать те же самые данные.
Я пытался исследовать этопроблема, но, кажется, ни у кого не возникает проблем с десериализацией. По крайней мере, я считаю, что это проблема.
public static class XMLManager
{
//Save Function
public static void SaveItemsUTF(ItemDatabase itemDB)
{
XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase));
string filename = Application.dataPath + "/StreamingFiles/XML/item_data.xml";
Encoding encoding = Encoding.GetEncoding("UTF-8");
using (StreamWriter stream = new StreamWriter(filename, false, encoding))
{
serializer.Serialize(stream, itemDB);
}
}
//Load Function
public static void LoadItems(ItemDatabase itemDB)
{
//Open an XML File
if (File.Exists(Application.dataPath + "/StreamingFiles/XML/item_data.xml"))
{
XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase));
FileStream stream = new FileStream(Application.dataPath + "/StreamingFiles/XML/item_data.xml", FileMode.Open);
itemDB = serializer.Deserialize(stream) as ItemDatabase;
stream.Close();
}
else
{
Debug.LogError("File not found!");
}
}
//Delete Function
public static void DeleteItems()
{
//Delete an XML File
File.Delete(Application.dataPath + "/StreamingFiles/XML/item_data.xml");
}
}
[System.Serializable]
public class ItemEntry
{
public string ItemName;
public SaveMaterial material;
public int Value;
}
[System.Serializable]
public class ItemDatabase
{
[XmlArray("CombatEquipment")]
public List<ItemEntry> list = new List<ItemEntry>();
}
public enum SaveMaterial
{
Wood,
Copper,
Iron,
Steel,
Obsidian
}
Когда я использую метод SaveItemsUTF, он успешно создает файл с тестовыми данными в правильном формате в правильном месте, которое можно увидеть здесь:https://imgur.com/a/5PJMTRh
Однако, когда я использую метод LoadItems, ничего не происходит. Никаких ошибок или логов в консоли. Данные не загружаются. Похоже, ничего не делать. Я официально застрял.