Есть ли что-то, что следует учитывать при использовании функции XmlDocument в unity3d?У меня возникла странная проблема: когда функция, использующая XmlDocument, вызывается из Awake () или OnGUI (), документ успешно редактируется.Но когда он вызывается изнутри события кнопки, то есть, несмотря на то, что перед сохранением документа я получаю хорошо отредактированную строку, он не может изменить сам документ.
Функция, которая редактирует файл (иногда):
public static void addTestProfile () {
string path = Application.dataPath + "/Documents/Profiles.xml";
Hashtable tempTable = new Hashtable();
tempTable.Add("user", "chuck II");
tempTable.Add("url", "funny");
tempTable.Add("passwrod", "1234asdf");
General.StoreProfile(tempTable, path);
}
public static void StoreProfile(Hashtable profile, string path) {
Debug.Log("profile to store name: " + profile["password"]);
XmlDocument doc = new XmlDocument();
doc.Load(profilesPath);
XmlElement element = doc.CreateElement("Profile");
XmlElement innerElement1 = doc.CreateElement("user");
innerElement1.InnerText = profile["user"] as string;
element.AppendChild(innerElement1);
XmlElement innerElement2 = doc.CreateElement("url");
innerElement2.InnerText = profile["url"] as string;
element.AppendChild(innerElement2);
XmlElement innerElement3 = doc.CreateElement("password");
innerElement3.InnerText = profile["password"] as string;
element.AppendChild(innerElement3);
doc.DocumentElement.AppendChild(element);
doc.Save(profilesPath);
Debug.Log(doc.InnerXml);
}
Я создал новый проект только для проверки этой проблемы, файл не редактируется при вызове непосредственно перед вызовом Application.loadLevel ();
Здесь он работает хорошо исам файл редактируется:
void OnGUI () {
General.addTestProfile(); // General is the singleton class that contains the function implementation
}
Но кое-как, как это не работает:
// GUI Save btn
if (GUI.Button(new Rect(255, 20, 60, 35), "Add")) {
General.addTestProfile(); // General is the singleton class that contains the function implementation
Application.LoadLevel(0);
}
Когда я печатаю результирующую строку прямо перед функцией save () xmlDocument, она показываетновый элемент, но каким-то образом XML-файл остается прежним.Я что-то упустил, может быть, что-то связанное с порядком исполнения?Что-то вроде тайм-аута?