【问题标题】:Compile Errors when building a Unity PC Standalone project with the Tango SDK imported使用导入的 Tango SDK 构建 Unity PC Standalone 项目时出现编译错误
【发布时间】:2023-03-15 07:36:01
【问题描述】:

伙计们,下午,

(我已经搜索了很多关于这个问题的答案,但它似乎是一种罕见的情况,或者我的 google-fu 达不到标准。如果答案很明显并且在另一个线程中,请道歉,如果你能指导我,我会在路上。)

问题:

似乎无法从 Unity 构建 PC 独立应用程序,而 TangoSDK 已导入项目中,即使构建中包含的场景不使用任何 Tango 资产。

(版本:Unity 5.5.1、TangoSDK Hopak、Windows 10)

复制问题的步骤:

  1. 创建一个空的 Unity 项目。
  2. 导入 TangoSDK Unity 包(与 Eisa、Farandole、Hopak 版本确认)
  3. 创建并保存标准空场景(仅限相机和灯光)
  4. 打开构建设置并将目标平台设置为“PC Mac & Linux Standalone”
  5. 点击“构建”
  6. 构建过程失败,出现错误:

Assets/TangoSDK/Core/Scripts/Common/OrientationManager.cs(62,0):错误 CS1029: #error: '不支持的平台'

我之所以尝试这样做是因为我们正在构建一个跨平台应用程序,该应用程序的移动版本正在使用 Tango。一个明显的解决方法是创建 2 个不同的项目,一个用于加载 TangoSDK 的 android 部署,一个用于桌面,没有 Tango 库。但是由于版本之间有很多共享资产,显然将所有内容都放在一个项目中效率更高,因此我正在尝试找到一个不涉及我现在将开发拆分为 2 个 Unity 项目的解决方案.

我有一种预感,问题是从 AndroidHelper 界面(在 Assets>Google-Unity>Scripts 中)开始的,因为它似乎对 OrientationManager 有一些引用,但我不知道为什么它会被包含在PC 版本。

有没有办法从构建中排除任何与 android 相关的脚本? 谢谢

编辑

这里有更多信息,经过更多的探索。原始错误是由于遗漏造成的,这是给出错误的原始代码:

        public static ScreenOrientation GetScreenOrientation()
        {
#if (UNITY_EDITOR || UNITY_STANDALONE_OSX)
            if (Screen.width > Screen.height)
            {
                return ScreenOrientation.LandscapeLeft;
            }
            else
            {
                return ScreenOrientation.Portrait;
            }
#elif (UNITY_IPHONE || UNITY_ANDROID)
            return Screen.orientation; 
#else 
#error not supported platform
#endif
        }

第一次平台检查未涵盖 UNITY_STANDALONE_WIN(Windows 平台),因此导致错误。换行

#if (UNITY_EDITOR || UNITY_STANDALONE_OSX)

#if (UNITY_EDITOR || UNITY_STANDALONE)

修复了原始错误,但总体而言问题仍然存在:每行抛出错误的行要么在 Tango 库中,要么正在使用 Tango 库,而这些脚本根本不应该被调用,因为我是本质上是建立一个空的场景。默认情况下,所有 Unity 构建中是否包含任何与 android 相关的脚本?这可能有助于我缩小搜索范围。

【问题讨论】:

    标签: c# android unity3d unity5 google-project-tango


    【解决方案1】:

    有没有办法从 构建?

    是的

    首先,这应该是制作 TangoSDK 的人的工作。他们可能忘记了这样做。我建议你联系他们并报告这个问题。

    解决方法是修改 TangoSDK 并使用 Unity 的平台指令自行修复,直到他们修复为止。

    切换到“PC Mac & Linux Standalone”以显示错误。尝试构建它以使错误出现。通过在编辑器中双击它找到每个错误的代码行,然后将其放入下面的代码中:

    #if UNITY_ANDROID || UNITY_IOS
    //PUT THAT LINE OF CODE THAT IS CAUSING THE ERROR HERE
    #endif
    

    由于 TangoSDK 支持 iOS,我也添加了 iOS。如果你对所有错误都这样做,你应该没有任何问题。

    【讨论】:

    • 感谢@Programmer 的建议,尽管它不起作用。它确实有助于解决当前的问题,但这只是允许构建过程进一步进行编译,并且更多的错误开始从不同的脚本中出现。我仍然相信问题在于首先调用的脚本/函数。话虽如此,您的建议有助于突出另一个(相关)问题(参见 OP 编辑​​)
    • 据我所知,这是唯一的方法。我建议您使用新的 TangoSDK 重新开始,但这一次,将 TangoSDK 中的每个脚本包装在 #if UNITY_ANDROID || UNITY_IOS#endif 中。每个脚本中的每个代码。
    • 这个答案帮助我指出了正确的方向,事实证明有一些流氓 TouchScreenKeyboard 请求导致了问题。谢谢前卫!
    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2022-10-14
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多