在使用空间映射时,我在以下位置得到一个错误:
void Update()
{
if (mappingEnabled)
{
foreach (GameObject surface in surfaces.Values)
{
surface.GetComponent<MeshRenderer>().enabled = DrawVisualMeshes;
}
if (surfaceWorkOutstanding == false && surfaceDataQueue.Count > 0)
{
SurfaceData smsd = surfaceDataQueue.Dequeue();
surfaceWorkOutstanding = Observer.RequestMeshAsync(smsd, Observer_OnDataReady);
}
}
}最后一行得到一个ArgumentNullException。代码是hololens教程的一部分,所以这里没有我的代码。
即使我没有采取任何行动,只是环顾四周,坠机也会发生。
null参数在smsd结构中;
- $exception {"Value cannot be null.\r\nParameter name: dataRequest.outputMesh"} System.ArgumentNullException有什么想法吗?
发布于 2016-08-17 03:50:09
来自MS站点的报价
使用最新的网格渲染空间表面,并(可选)将其用于物理碰撞和光线投射。确认
SurfaceData的内容不是null很重要。
这意味着在调用smsd并将其传递到Observer.RequestMeshAsync函数之前,您必须检查它是否为null。
if (mappingEnabled)
{
foreach (GameObject surface in surfaces.Values)
{
surface.GetComponent<MeshRenderer>().enabled = DrawVisualMeshes;
}
if (surfaceWorkOutstanding == false && surfaceDataQueue.Count > 0)
{
SurfaceData smsd = surfaceDataQueue.Dequeue();
if (smsd.outputMesh == null || smsd.outputCollider == null || smsd.outputAnchor == null) { return; }
{
surfaceWorkOutstanding = Observer.RequestMeshAsync(smsd, Observer_OnDataReady);
}
}
}https://stackoverflow.com/questions/38976418
复制相似问题