【问题标题】:Why is platform dependent compilation not working?为什么平台相关的编译不起作用?
【发布时间】:2017-09-15 18:29:30
【问题描述】:

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

【问题讨论】:

    标签: c# android unity3d daydream


    【解决方案1】:

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

    如果你想在没有编辑器的时候运行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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      相关资源
      最近更新 更多