2017-09-15 9 views
1

私はGoogle Daydream(モバイルVRプラットフォーム)用のゲームを作成しています。エディタとターゲットビルドでデータをロードして保存するために、別のコードを使用します。保存My機能は、次のようになります。プラットフォーム依存のコンパイルが機能しないのはなぜですか?

public void SaveData() { 
    XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase)); 
    FileStream stream; 
#if UNITY_ANDROID 
    stream = new FileStream(Application.persistentDataPath + "/game_data.xml", FileMode.Create); 
    serializer.Serialize(stream, gameDB); 
    stream.Close(); 
    Debug.Log("Data Saved[Android]"); 
#endif 
#if UNITY_EDITOR 
    stream = new FileStream(Application.dataPath + "/StreamingAssets/XML/game_data.xml" , FileMode.Create); 
    serializer.Serialize(stream, gameDB); 
    stream.Close(); 
    Debug.Log("Data Saved[Editor]"); 
#endif 
} 

私はアンドロイドとエディタので、両方の部分が実行されているため、両方のログを取得し、エディタでそれを実行する場合。これは、Unityがスマートフォンをエミュレートしているためです(エディタでゲームをプレイするたびに「VRDevice daydreamはエディタモードではサポートされていませんので、ターゲットデバイス上で実行してください」と表示されます)?

答えて

3

エディタ特定のプラットフォーム、ビルド設定で選択されたいずれかでもある

あなたがいないときエディタでアンドロイドを実行したい場合は、あなたがそれを言う必要があります。

#if UNITY_ANDROID && !UNITY_EDITOR 
    stream = new FileStream(Application.persistentDataPath + "/game_data.xml", FileMode.Create); 
    serializer.Serialize(stream, gameDB); 
    stream.Close(); 
    Debug.Log("Data Saved[Android]"); 
#elif UNITY_EDITOR 
    stream = new FileStream(Application.dataPath + "/StreamingAssets/XML/game_data.xml" , FileMode.Create); 
    serializer.Serialize(stream, gameDB); 
    stream.Close(); 
    Debug.Log("Data Saved[Editor]"); 
#endif 
} 
関連する問題