unity3dでXmlDocument関数を使用する際に考慮すべきことはありますか? 私はこの奇妙な問題を抱えています:XmlDocumentを使用する関数がAwake()またはOnGUI()から呼び出されると、その文書は正常に編集されます。しかし、ボタンイベントの内部から呼び出されたときには、イベントを厳しくする必要があります。ドキュメントを保存する前によく編集された文字列を取得します。ドキュメント自体を変更することはできません。ファイルを編集Unity 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);
}
I)は、(右保存する前に、結果の文字列を印刷するときxmlDocument関数は、新しい項目を表示しますが、何とかxmlファイルは同じままです。 実行順序に関係する重要なものがありませんか?タイムアウトのようなもの?
を私はGUIのループ内でファイルIOを実行することをお勧めしません。ほとんどの場合、OnGUI呼び出しが複数回呼び出されたことに気が付いたので、何らかの形式のコルーチンを使用して関数を実行することをお勧めします。一般に、OnGUIコールで実際にGUIを描画していないものを実行することは決してありません。 –