xDocument не работает в билде

Программирование на Юнити.

xDocument не работает в билде

Сообщение STONE.exe 10 июн 2021, 01:55

Люди добрые, помогите неумёхе, пожалуйста. :ympray:
Использую xDocument для диалоговой системы. В самом Юнити всё работает на ура, но когда компилирую билд, то в нём данные из XML-ки в переменную не грузятся.
Может быть при использовании этих библиотек нужны какие-то особые настройки билда? Может быть путь как-то по другому нужно прописывать? Что я делаю не так?
Ниже фрагмент кода имеющий отношении к ситуации.

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Linq;
using System.Xml.XPath;
using TMPro;
using UnityEngine.UI;

public class TextLoader : MonoBehaviour
{
    XDocument allText = XDocument.Load("Assets/XML/AllText.xml");
   
    ...

    public void GetString(int id)
    {
        placeImage.GetComponent<Image>().sprite = allPlaces[int.Parse(allText.XPathSelectElement("root/element[@id=" + id.ToString() + "]/place").Value)];
        visavisName.GetComponent<TMP_Text>().text = allText.XPathSelectElement("root/element[@id=" + id.ToString() + "]/name").Value;
        textTmp.GetComponent<TMP_Text>().text = "шаг 4, значение " + allText.XPathSelectElement("root/element[@id=" + id.ToString() + "]/visavis").Value;
        visavis.GetComponent<Image>().sprite = allVisavis[int.Parse(allText.XPathSelectElement("root/element[@id=" + id.ToString() + "]/visavis").Value)];
        mainText.GetComponent<TMP_Text>().text = allText.XPathSelectElement("root/element[@id=" + id.ToString() + "]/text").Value;
        answers[0].GetComponent<TMP_Text>().text = allText.XPathSelectElement("root/element[@id=" + id.ToString() + "]/answer0").Value;

        ...
    }
}
 
Всё не так просто, как на самом деле.
Аватара пользователя
STONE.exe
UNец
 
Сообщения: 8
Зарегистрирован: 01 май 2021, 09:52

Re: xDocument не работает в билде

Сообщение DbIMok 10 июн 2021, 10:28

XDocument.Load("Assets/XML/AllText.xml"); - конечно этот путь в билде не существует
используйте XDocument.Parse из https://docs.unity3d.com/ru/2019.4/Manu ... Asset.html
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: xDocument не работает в билде

Сообщение STONE.exe 10 июн 2021, 10:52

DbIMok писал(а):XDocument.Load("Assets/XML/AllText.xml"); - конечно этот путь в билде не существует
используйте XDocument.Parse из https://docs.unity3d.com/ru/2019.4/Manu ... Asset.html

Благодарю за ответ, но можно чуть подробней, для альтернативно одарённых.
Метод Parse принимает строку. Как мне из файла строку сделать? Тоже ведь не получится из-за пути. Или мне в этот же скрипт XML писать? Или куда мне присунуть XML-файл, чтобы он сохранился в билде и к нему можно было обратиться (и какой тогда будет путь)?
Всё не так просто, как на самом деле.
Аватара пользователя
STONE.exe
UNец
 
Сообщения: 8
Зарегистрирован: 01 май 2021, 09:52

Re: xDocument не работает в билде

Сообщение STONE.exe 10 июн 2021, 11:51

Всё я разобрался. Для тех кто задастся этим вопросом после меня:
Для начала нужно в "Assets" создать специальную папку "Resources" (я про такую и не знал) и XML положить именно в неё.
А код такой:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Linq;
using System.Xml.XPath;
using TMPro;
using UnityEngine.UI;

public class TextLoader : MonoBehaviour
{
    private TextAsset xmlAsset;
    private XDocument allText;
   ...
   
   private void Start()
    {
        xmlAsset = Resources.Load<TextAsset>("AllText");
        allText = XDocument.Parse(xmlAsset.text);
        ...

    }

    ...
}
 
Всё не так просто, как на самом деле.
Аватара пользователя
STONE.exe
UNец
 
Сообщения: 8
Зарегистрирован: 01 май 2021, 09:52


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


cron