使用导入的 Tango SDK 构建 Unity PC 独立项目时出现编译错误



下午的伙计们,

(我已经搜索了相当多的答案,但似乎要么是罕见的情况,要么是我的 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 库。但是由于版本之间有很多共享资源,因此将所有内容都放在一个项目中显然要高效得多,因此我正在尝试找到一种解决方案,该解决方案目前不涉及我将开发拆分到两个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 相关的脚本?这可能有助于我缩小搜索范围。

有没有办法从 建?

是的

首先,这应该是制作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。如果您对所有错误执行此操作,您应该没有任何问题。

最新更新