2017-05-25 102 views
0

下午乡亲,编译错误与探戈SDK进口

(我已搜索周围公平一点的答案,这个问题,但似乎它要么罕见的情况下,或我的谷歌福是没有达到标准,如果道歉答案是显而易见的,在另一个线程,如果你能告诉我,我想我的路)

的问题:。

它看起来不可能从Unity创建PC独立应用程序,而TangoSDK被导入到项目中,即使构建中包含的场景不适合我们e任何Tango资产。

(版本:5.5.1团结,TangoSDK Hopak时,Windows 10)

步骤来复制问题:

  1. 创建一个空的团结工程。
  2. 导入TangoSDK统一包(带版本EISA,Farandole证实,Hopak)
  3. 创建并保存一个标准的空场景(摄像头和光线只)
  4. 打开生成设置和目标平台设置为“PC的Mac & Linux的孤立”
  5. 点击 '生成'
  6. 构建过程失败,出现错误:

Assets/TangoSDK/Core/Scripts/Common/OrientationManager.cs(62,0): error CS1029: #error: 'not supported platform'

的我试图这样做的原因是因为我们正在构建一个跨平台的应用程序,其中该应用程序的移动版本正在使用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) 

修正原来的错误,但整体而言,问题仍然存在:即抛出一个错误每行是在探戈库或使用探戈库,当这些脚本根本不应该被调用时,因为我基本上构建了一个空的场景。默认情况下,所有Unity版本中是否包含与Android相关的脚本?这可能会帮助我缩小搜索范围。

回答

0

Is there a way then to exclude any android-relevant scripts from the build?

所有的杉杉,这应该是取得了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到这一点。如果您对所有错误执行此操作,则不应该有任何问题。

+0

感谢@Programmer的建议,尽管它没有奏效。它确实帮助解决了当前的问题,但这只是让编译过程继续进行编译,并且从不同的脚本开始显示更多的错误。我仍然相信问题在于脚本/函数首先被调用。话虽如此,您的建议帮助突出了一个不同的(相关)问题(请参阅OP编辑) – cheliotk

+0

据我所知,这是唯一的方法。我建议你重新开始一个新的TangoSDK,但这一次,将每个脚本包装在'#if UNITY_ANDROID ||内的TangoSDK中。 UNITY_IOS'和'#endif'。每个脚本中的每个代码。 – Programmer

+1

这个答案帮助我指出了正确的方向,结果发现有几个流氓TouchScreenKeyboard请求导致了这个问题。谢谢Prog! – cheliotk