Unity在构建WSA时尝试加载错误的命名空间

时间:2017-06-21 10:06:17

标签: unity3d

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

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

  

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

     

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

我不希望UWP能够加载Win32HidDevice,我的UWP DLL也不会使用它,因此它必须来自其他DLL。该应用程序在编辑器中进行了良好的调试,如果我还检查第一个DLL上的“Standalone”,那么我可以构建并运行一个独立的应用程序。

在构建WSA时,我需要使用什么设置来忽略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;
        }
    }
}

1 个答案:

答案 0 :(得分: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