首页 文章

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

提问于
浏览
0

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

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

Assets \ CubeScript.cs(16,48):错误CS0246:找不到类型或命名空间名称'Win32HidDevice'(您是否缺少using指令或程序集引用?)构建Player时出错,因为脚本有编译器错误

我不希望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 回答

  • 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
    

相关问题