【发布时间】:2023-03-15 07:36:01
【问题描述】:
伙计们,下午,
(我已经搜索了很多关于这个问题的答案,但它似乎是一种罕见的情况,或者我的 google-fu 达不到标准。如果答案很明显并且在另一个线程中,请道歉,如果你能指导我,我会在路上。)
问题:
似乎无法从 Unity 构建 PC 独立应用程序,而 TangoSDK 已导入项目中,即使构建中包含的场景不使用任何 Tango 资产。
(版本:Unity 5.5.1、TangoSDK Hopak、Windows 10)
复制问题的步骤:
- 创建一个空的 Unity 项目。
- 导入 TangoSDK Unity 包(与 Eisa、Farandole、Hopak 版本确认)
- 创建并保存标准空场景(仅限相机和灯光)
- 打开构建设置并将目标平台设置为“PC Mac & Linux Standalone”
- 点击“构建”
- 构建过程失败,出现错误:
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