在unity3d中使用XmlDocument函数有什么需要注意的吗?我遇到了这个奇怪的问题:当从 Awake() 或 OnGUI() 调用使用 XmlDocument 的函数时,文档被成功编辑。但是当它从按钮事件内部调用时,我在保存文档之前得到了一个编辑良好的字符串,它无法修改文档本身。
编辑文件的函数(有时):
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 文件保持不变。我是否遗漏了一些可能与执行顺序有关的重要信息?超时之类的东西?
我是一名优秀的程序员,十分优秀!