- Home /
Saving and Loading XML in Standalone
In my game, I have an arbitrary number of XML files that are used to load in map data and populate the map. Additionally, I want to automatically save to XML changes that players make to the map.
I currently have this working in the editor mode, but I can't get it to work in the standalone version.
The way I am saving and loading XML currently is using the System.Xml method. Here's a sample of my code:
/* WORLD SAVE DATA */ public void SerializeData(WorldSaveData saveData) { Debug.Log("Saving world data..."); XmlSerializer serializer = new XmlSerializer(typeof(WorldSaveData)); TextWriter textWriter = new StreamWriter(Application.dataPath + "/data/world/worldsave.xml"); serializer.Serialize(textWriter, saveData); textWriter.Close();
Debug.Log("Saved to: " + Application.dataPath + "/data/world/worldsave.xml");
}
public WorldSaveData DeserializeData(WorldSaveData saveData) { Debug.Log("Loading world data..."); XmlSerializer serializer = new XmlSerializer(typeof(WorldSaveData)); TextReader textReader = new StreamReader(Application.dataPath + "/data/world/worldsave.xml"); saveData = (WorldSaveData)serializer.Deserialize(textReader); textReader.Close();
Debug.Log("Loaded world data successfully.");
return saveData;
}
This is functional and works well for me. Looking around, I saw that in standalone versions you might have to use the Resources folders and Resources.Load, but doing so only gives me a TextAsset, which I am unable to convert into the StreamWriter/TextWriter format I'd like to use if at all possible. Also, in my searches around I was only able to find people discussing loading XML data, but I need to ensure I can save data as well.
Hopefully some kind folks around here can help! Thanks for reading my question.
System.Xml (and System.IO) should work in a standalone build. Note that when you create a build, only files referenced by your scene will be included in the data for the build, plus any files under a "Resources" folder. This is potentially why you can't load the data in a standalone build -- it may not be there. Deter$$anonymous$$e where Application.dataPath points to in your standalone build, and see what files are present. (For reading you could use TextAsset.text, and open it with a StringReader, but that doesn't solve your saving problem.)
Answer by bearcano · Jan 25, 2011 at 10:51 PM
This isn't exactly a great "answer" to the question as much as a workaround, but here's what I've found:
- You can't put the data into the "Resources" folder prior to building, due to what Unity does to it.
- Each application.dataPath is different based on the target: http://unity3d.com/support/documentation/ScriptReference/Application-dataPath.html
So the workaround I'm using now is this:
- Copy the source folder for my xml files (in my case above, the entire "data" folder)
- Paste it into the dataPath folder for the build (in Windows, it's applicationName_Data)
I've found that it works in this way, even if it's not the most ideal solution. I'd still be happy to hear other suggestions.
Your answer
![](https://koobas.hobune.stream/wayback/20220613101004im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Saving Game Problem 1 Answer
Save and Load from XML U3 Collections Problem 1 Answer
How to save my serialized levels ? 1 Answer
Serialization scripting error 1 Answer
the XML file doesn't work when i install the app from the app store 0 Answers