gpt4 book ai didi

c# - 为什么依赖于平台的编译不起作用?

转载 作者:太空狗 更新时间:2023-10-29 16:11:35 24 4
gpt4 key购买 nike

我正在为 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 daydream。请在目标设备上运行。”?

最佳答案

当您在编辑器中时,您也处于特定平台中,即在build设置中选择的平台。

如果你想在不在编辑器中时运行 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
}

关于c# - 为什么依赖于平台的编译不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46245530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com