Моя задача - при изменении языка меню, изменить его везде, во всей игре.
Для этого я создал скрипты
DataHolder - читает настройки из xml и хранит их в своих полях.
XMLReader - читает настройки из xml
XMLWriter - пишет настройки в xml
Все скрипты работают, но чтение запись в xml происходит с задержкой 10 секунд, что для простого однострочного xml файла на ssd нереально долго.
XMLWriter
public static class XMLWriter
{
public static void SetXMLValue(string pathToXMLFile, string nodeName1, string nodeName2, string nodeName2Value)
{
TextAsset textAsset = Resources.Load<TextAsset>(pathToXMLFile);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(textAsset.text);
XmlNode node = xmlDoc.SelectSingleNode("/"+nodeName1+"/"+nodeName2);
node.InnerText = nodeName2Value;
File.WriteAllText(Application.dataPath + "/Resources/"+pathToXMLFile+".xml", xmlDoc.OuterXml);
}
}
XMLReader
public static class XMLReader
{
public static string GetXMLValue(string pathToXMLFile, string NodeName1, string NodeName2)
{
TextAsset textAsset = Resources.Load<TextAsset>(pathToXMLFile);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(textAsset.text);
XmlNode node = xmlDoc.SelectSingleNode(NodeName1+"/"+NodeName2);
string nodeValue = node.InnerText;
return nodeValue;
}
}
DataHolder
public static class DataHolder
{
private static string gameLanguage;
// Обновить данные.
public static void UpdateData()
{
gameLanguage=XMLReader.GetXMLValue("Settings", "GameSettings", "language");
}
}
Пусть в Settings.xml language = RU
// Изменим его на ENG пишем в файл
XMLWriter.SetXMLValue("GameSettings", "Settings", "language","ENG");
// Обновим данные в DataHolder - прочитаем значения.
DataHolder.UpdateData();
Debug.Log(DataHolder.gameLanguage); // RU
Подождем 3 секунды...RU. Подождем 10 сек - ENG.
Ставил дебаг везде, отслеживал возможные ошибки tre/catch, следил за xml файлом.
По ощущениям - происходит задержка записи в xml файл. Часто значение там изменяется через 5-10 секунд.
В обычных десктопных программах, при работе с xml такого не встречал. Там всё почти мгновенно.
Как это исправить?