【问题标题】:Unity trying to load wrong namespace when building for WSAUnity 在为 WSA 构建时尝试加载错误的命名空间
【发布时间】:2017-06-21 10:06:17
【问题描述】:

我有两个 DLL,它们的 PDB 文件已加载到我的 Unity 项目中。一个目标是“为插件选择平台”检查器中的编辑器,位于 Assets/Plugins 文件夹中。其他目标 WSAPlayer,为 SDK 选择了 UWP,为脚本后端选择了 DotNet。它位于 Assets/Plugins/WSA 文件夹中。

当我尝试为 Windows 应用商店构建(SDK:通用 10,目标设备:PC,UWP 构建类型:XAML,UWP SDK:最新安装,构建和运行:本地机器)时,我收到以下错误:

Assets\CubeScript.cs(16,48):错误 CS0246:找不到类型或命名空间名称“Win32HidDevice”(您是否缺少 using 指令或程序集引用?)

构建播放器时出错,因为脚本存在编译器错误

我不希望 UWP 能够加载 Win32HidDevice,我的 UWP DLL 也不使用它,所以它一定来自其他 DLL。该应用程序在编辑器中可以正常调试,如果我还在第一个 DLL 上选中“独立”,那么我可以构建和运行独立应用程序。

在为 WSA 构建时,我需要哪些设置才能让 Unity 忽略 Win32 DLL 并使用 UWP ?

我不认为它是脚本本身,但为了完整起见,它是:

using UnityEngine;
using Zanzibar;

public class OrbScript : MonoBehaviour
{
    public Mat mat;

    void Start ()
    {
        MatManager.Instance.MatConnected += MatConnected;
        MatManager.Instance.MatDisconnected += MatDisconnected;
        MatManager.Instance.Initialize(Communication.AllSupported);
    }

    private void MatConnected(Mat mat)
    {
        Debug.LogFormat("Mat {0}", mat.UniqueName);
        this.mat = mat;
    }

    private void MatDisconnected(Mat mat)
    {
        this.mat = null;
    }

    void Update ()
    {
        if (mat == null)
        {
            GetComponent<Renderer>().material.color = Color.black;
        }
        else if (mat.TaggedObjects.Count > 0)
        {
            GetComponent<Renderer>().material.color = Color.green;
        }
        else if (mat.Touches.Count > 0)
        {
            GetComponent<Renderer>().material.color = Color.magenta;
        }
        else
        {
            GetComponent<Renderer>().material.color = Color.white;
        }
    }
}

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    @Tautvydas-Zilys 在 Unity 论坛 here 上发现了我的问题。我一直在寻找错误的脚本,doh! CubeScript.cs 包含这一行:

    var currentMat = orb.mat.Device as Win32HidDevice;
    

    我需要用这些行替换:

    #if UNITY_STANDALONE_WIN || UNITY_EDITOR
        var currentMat = orb.mat.Device as Win32HidDevice;
    #elif UNITY_WSA_10_0
        var currentMat = orb.mat.Device as UwpDevice;
    #endif
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2020-01-30
      • 2022-09-27
      • 2020-01-14
      相关资源
      最近更新 更多