【问题标题】:Unresolved namespace UnityEngine.VR.WSA未解析的命名空间 UnityEngine.VR.WSA
【发布时间】:2018-09-27 19:54:59
【问题描述】:

我有一个使用 HLAPI 的联网 Unity 项目,我需要从中构建:

  • Hololens 客户端(平台 = WSA)
  • Windows 桌面客户端(平台 = PC 独立)
  • Windows 桌面服务器(平台 = PC 独立)

我有三个专门的场景,每个角色一个,还有一个基础场景,根据角色设置在运行时只加载其中一个。

这就是问题所在。我有脚本,包括 Microsoft 的 HoloToolkit,在 Hololens 客户端场景中使用命名空间 UnityEngine.VR.WSAUnityEngine.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?

GestureRecognizerUnityEngine.VR.WSA.Input 中。如果在 PC 独立平台下调用这些命名空间中的任何类,我会认为后端足够聪明,可以在运行时简单地抛出 NotSupported 异常(而且我足够聪明,不会在角色 = 桌面客户端时从它们调用任何东西或桌面服务器),但它根本无法编译,所以我真的被卡住了。有没有人知道任何解决方案而不用UNITY_WSAUNITY_STANDALONE 预处理器标志重写所有内容以插入任何地方,即使在第 3 方导入的资产中?

我在使用 Hololens 的 Unity 5.4 测试版,这完全没有问题。然后我迁移到 5.6,这变成了一个。

【问题讨论】:

    标签: unity3d hololens


    【解决方案1】:

    您甚至在制作应用之前就应该考虑到这一点。某些 API 在 Windows 独立版和 Windows 应用商店构建之间不可用。更糟糕的是,涉及 Hololens。

    您关于为什么预处理器解决方案不可接受的示例并不好。 预处理器指令是解决这个问题的方法。您不必将它包裹在声明 class 的地方。只需将它包裹在您导入名称空间的地方。例如,

    #if UNITY_WSA
        using UnityEngine.VR.WSA;
    #endif
    

    此外,为了让您真正轻松地做到这一点,您应该直接从您的其他类从 UnityEngine.VR.WSA 命名空间访问 API。

    构建一个包装器类,将来自UnityEngine.VR.WSA 命名空间的所有输入包装起来,然后在该类中使用#if UNITY_WSA。通过这样做,您只需要在一个类中包含 #if UNITY_WSA,而不是在所有引用 UnityEngine.VR.WSA 命名空间中的任何 API 的类中。

    更容易管理。要访问来自 UnityEngine.VR.WSA 命名空间的输入,您可以使用该包装器。请记住只包装您需要的 API。

    【讨论】:

    • 感谢您的回答。我确实理解您将所有内容收集在单个包装类下的建议,但如果您熟悉 Hololens 或尚未添加的任何其他内容,我不应该使用 HoloToolkit 进行此操作。我一直在避免这种可能性,但也许项目本身应该分解成许多子项目。每个子项目一个平台,这个问题就完成了。事实上,我已经使用 Unity HLAPI 进行了尝试;来自不同项目的资产是一团糟。在我看来,HLAPI 似乎是针对单个项目的。但也许使用 Unity LLAPI...
    • 你可以为每个子项目做一个平台,这更糟,因为你必须让你的代码看起来一样。如果您在一个项目中修复了一个错误,则必须在另一个项目中修复另一个错误。在它变得无法管理之前要多久。如果您不想使用包装器,那很好。只需在函数、导入和变量声明中使用上面提到的#if UNITY_WSA。那应该可以。
    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2014-01-25
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    相关资源
    最近更新 更多