【发布时间】:2018-09-27 19:54:59
【问题描述】:
我有一个使用 HLAPI 的联网 Unity 项目,我需要从中构建:
- Hololens 客户端(平台 = WSA)
- Windows 桌面客户端(平台 = PC 独立)
- Windows 桌面服务器(平台 = PC 独立)
我有三个专门的场景,每个角色一个,还有一个基础场景,根据角色设置在运行时只加载其中一个。
这就是问题所在。我有脚本,包括 Microsoft 的 HoloToolkit,在 Hololens 客户端场景中使用命名空间 UnityEngine.VR.WSA 和 UnityEngine.VR.WSA.Ipnut 中的类进行了引用。这对于 WSA 平台编译得很好。但是,当需要构建桌面客户端和桌面服务器时,所有这些脚本都无法编译,就好像这些命名空间不存在一样。
这是一个例子:
Assets/HoloToolkit/Input/Scripts/GestureManager.cs(139,17): error CS0246: The type or namespace name `GestureRecognizer' could not be found. Are you missing an assembly reference?
GestureRecognizer 在UnityEngine.VR.WSA.Input 中。如果在 PC 独立平台下调用这些命名空间中的任何类,我会认为后端足够聪明,可以在运行时简单地抛出 NotSupported 异常(而且我足够聪明,不会在角色 = 桌面客户端时从它们调用任何东西或桌面服务器),但它根本无法编译,所以我真的被卡住了。有没有人知道任何解决方案而不用UNITY_WSA 或UNITY_STANDALONE 预处理器标志重写所有内容以插入任何地方,即使在第 3 方导入的资产中?
我在使用 Hololens 的 Unity 5.4 测试版,这完全没有问题。然后我迁移到 5.6,这变成了一个。
【问题讨论】: