我有两个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;
}
}
}
答案 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