x


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.

more ▼

asked Jan 25 '11 at 09:12 AM

bearcano gravatar image

bearcano
72 1 1 7

System.Xml (and http://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. Determine 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.)

Jan 25 '11 at 04:55 PM yoyo
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

This isn't exactly a great "answer" to the question as much as a workaround, but here's what I've found:

So the workaround I'm using now is this:

  1. Copy the source folder for my xml files (in my case above, the entire "data" folder)
  2. 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.

more ▼

answered Jan 25 '11 at 10:51 PM

bearcano gravatar image

bearcano
72 1 1 7

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x437
x436
x255
x178
x171

asked: Jan 25 '11 at 09:12 AM

Seen: 3761 times

Last Updated: Jan 25 '11 at 09:12 AM