我遇到了一个问题,我无法从StreammingAssets文件夹中的XML文件中读取数据。在编辑器上一切正常,但在Android上没有。
public void Start () {
Type[] itemTypes = { typeof(Equipment), typeof(Weapon), typeof(Consumeble), typeof(Jevelary) };
XmlSerializer serializer = new XmlSerializer(typeof (ItemContainer), itemTypes);
TextReader textReader = new StreamReader (Application.streamingAssetsPath + "/" + "Items.xml");
itemContainer = (ItemContainer)serializer.Deserialize (textReader);
textReader.Close ();
}
我确信问题出现在这一行:
TextReader textReader = new StreamReader (Application.streamingAssetsPath + "/" + "Items.xml");
我不知道如何解决它。 提前谢谢。
答案 0 :(得分:0)
StreamingAssets
不是StreammingAssets
。像these这样的特殊文件夹区分大小写,必须拼写正确才能使它们按预期工作。只需更正拼写即可。如果可能,请直接从此处复制名称(StreamingAssets
)并将其粘贴到编辑器中。也许这是你问题中的拼写错误?
主要问题在于:
TextReader textReader = new StreamReader (Application.streamingAssetsPath + "/" + "Items.xml");
无法使用StreamingAssets
从StreamReader
文件夹中读取。您必须使用WWW
在Android中执行此操作。不确定这是否也适用于iOS。
1 。使用StreamingAssets
类从WWW
文件夹中读取xml文件。
2 。从字符串StringReader
读取新的WWW
实例。
3 。从TextReader
个实例中创建新的StringReader
。
void Start()
{
StartCoroutine(readXML());
}
IEnumerator readXML()
{
Type[] itemTypes = { typeof(Equipment), typeof(Weapon), typeof(Consumeble), typeof(Jevelary) };
XmlSerializer serializer = new XmlSerializer(typeof(ItemContainer), itemTypes);
WWW www = new WWW(Application.streamingAssetsPath + "/" + "Items.xml");
yield return www;
if (string.IsNullOrEmpty(www.error))
{
string result = www.text;
TextReader textReader = new StringReader(result);
itemContainer = (ItemContainer)serializer.Deserialize(textReader);
textReader.Close();
}
}
答案 1 :(得分:0)
您可能需要使用file:///前缀作为android的路径。
尝试调试传递给StreamReader的路径,然后尝试使用路径从浏览器打开该文件。
你可以使用www类,像程序员那样做。
#if UNITY_ANDROID
WWW www = new WWW( "file:///" + Application.streamingAssetsPath + "/Items.xml");
#elif UNITY_EDITOR
//your previous code which worked in the editor
#endif