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

问题描述:

我正在为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 
} 

当我在编辑器中,我得到既为Android和编辑器,以便两个部分执行日志运行它。这可能是由于Unity模拟智能手机造成的(每当我在编辑器中玩游戏时,我都会收到以下警告:“编辑器模式下不支持VRDevice白日梦,请在目标设备上运行。”?

当您在编辑器中也是在特定的平台,在构建设置中选择的一个

如果您希望在不编辑器,那么你需要说出来运行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 
}