为什么平台相关的编译不起作用?

Woj*_*cel 2 c# android unity-game-engine daydream

我正在为Google Daydream(移动VR平台)创建游戏,并使用不同的代码在编辑器和目标版本中加载和保存数据。我的保存功能如下所示:

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
}
Run Code Online (Sandbox Code Playgroud)

当我在编辑器中运行它时,我同时获得了android和编辑器的日志,因此这两个部分都被执行了。这是否可以归因于Unity仿真智能手机(每次我在编辑器中玩游戏时,都会收到以下警告:“在编辑器模式下不支持VRDevice白日梦。请在目标设备上运行。”?

Eve*_*rts 7

当您在Editor中时,您同时也在特定的平台上,即在构建设置中选择的平台。

如果要在不在编辑器中时运行android,则需要说一下:

#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
}
Run Code Online (Sandbox Code Playgroud)