Проблема с созданием файла на мобильном устройстве с функцией в игровом скрипте.Доступ к пути запрещен - PullRequest
0 голосов
/ 24 июня 2019

Я создал игру, в которой вся статистика игрока хранится в файле XML.Когда я создаю игру на мобильном устройстве, я получаю сообщение об ошибке:

readonly string datapath = @"data.xml"; 
void CreateNewXMLFile(string name)
{
    XmlDocument gamedata = new XmlDocument();
    XmlNode docNode = gamedata.CreateXmlDeclaration("1.0", "UTF-8", null);
    gamedata.AppendChild(docNode);
    //Username
    XmlNode GameUsersNode = gamedata.CreateElement("GameUser");
    gamedata.AppendChild(GameUsersNode);
    //User
    XmlNode Username = gamedata.CreateElement("Username");
    Username.InnerText = name;
    GameUsersNode.AppendChild(Username);
    //Lastlogged
    XmlNode LastloggedTime = gamedata.CreateElement("LastloggedTime");
    LastloggedTime.InnerText = System.DateTime.Now.ToString();
    GameUsersNode.AppendChild(LastloggedTime);
    //Stage
    XmlNode Stage = gamedata.CreateElement("Stage");
    Stage.InnerText = "1";
    GameUsersNode.AppendChild(Stage);
    //Money
    XmlNode Money = gamedata.CreateElement("Money");
    Money.InnerText = "0";
    GameUsersNode.AppendChild(Money);
    //GreenHeroLvl
    XmlNode GreenHeroLvl = gamedata.CreateElement("GreenHeroLvl");
    GreenHeroLvl.InnerText = "0";
    GameUsersNode.AppendChild(GreenHeroLvl);
    //BlackHero
    XmlNode BlackHero = gamedata.CreateElement("BlackHero");
    BlackHero.InnerText = "0";
    GameUsersNode.AppendChild(BlackHero);
    //AssasinHero
    XmlNode AssasinHero = gamedata.CreateElement("AssasinHero");
    AssasinHero.InnerText = "0";
    GameUsersNode.AppendChild(AssasinHero);

    gamedata.Save(datapath);
}

Ошибка:

06-24 21: 04: 47.092: E / Unity (22918):UnauthorizedAccessException: доступ к пути "/data.xml" запрещен.

1 Ответ

0 голосов
/ 24 июня 2019

Вы пытаетесь записать в системный путь /data.xml.

На Android у вас обычно нет прав на запись чего-либо в корневую папку /!


Полагаю, вы скорее хотите написать, например, в папку Application.persistentDataPath , например

readonly string datapath = Path.Combine(Application.persistentDataPath, "data.xml");

, что в Android дает правильный путь, например

/storage/emulated/0/Android/data/<packagename>/files/data.xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...