2016-10-01 14 views
0

StreammingAssetsフォルダにあるXMLファイルからデータを読み取ることができないという問題に直面しました。エディタではすべて正常に動作しますが、Androidでは動作しません。AndroidのStreamingAssetsからXMLファイルを読み込む際の問題

 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

Google for logcat。それを使用する方法を学びます。色付きのテキストとフィルタリングのため、アンドロイドスタジオで好きです。その後、あなたのlogcatにyeyを保持しながら問題を再現してください。私たちがあなたを助けるためにここにあなたの例外を投稿してください。 –

答えて

0

StreamingAssetsではなく、StreammingAssetsです。 theseのような特別なフォルダでは、大文字と小文字が区別され、正しく機能するように正しく入力する必要があります。スペルを修正するだけです。可能であれば、ここから直接名前をコピーして(StreamingAssets)、エディタに貼り付けます。たぶんこれはあなたの質問のタイプミスですか?

主な問題はここにある:

TextReader textReader = new StreamReader (Application.streamingAssetsPath + "/" + "Items.xml"); 

あなたはStreamReaderStreamingAssetsフォルダから読み取ることができません。 Androidでこれを行うにはWWWを使用する必要があります。これがiOSにも当てはまるかどうかは不明です。

WWWクラスのStreamingAssetsフォルダからxmlファイルを読み込みます。

WWWの文字列から新しいStringReaderインスタンスを作成します。 StringReaderインスタンスから

.Create新しいTextReader

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(); 
    } 
} 
0

アンドロイドのパスには、file:///接頭辞を使用する必要があります。

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 
関連する問題