0

使用空间映射时,出现以下错误:

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

有任何想法吗?

4

1 回答 1

2

来自MS 网站的报价:

使用最新的网格渲染空间表面,并(可选)将其用于物理碰撞和光线投射。确认 的内容SurfaceData不为空很重要。

这仅仅意味着您必须在调用并将其传递给函数之前检查是否smsd 是。nullObserver.RequestMeshAsync

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);
            }
        }
    }
于 2016-08-17T03:50:09.283 回答