使用Kinect检测手势会使Unity冻结

时间:2016-10-26 04:35:55

标签: c# windows unity3d kinect

我试图用Kinect和Unity检测自定义手势。它适用于一个人,但Unity会在需要检测到多个人时冻结并需要重新启动。

void Update()
{
    if (BodySourceManager == null)
    {
        return;
    }

    _BodyManager = BodySourceManager.GetComponent<BodySourceManager>();
    if (_BodyManager == null)
    {
        return;
    }

    Kinect.Body[] data = _BodyManager.GetData();
    if (data == null)
    {
        return;
    }

    _VGB_Source = _BodyManager.GetRecordedGesturesData();
    detectedGestures = _BodyManager.GetDetectedGestures();
    List<ulong> trackedIds = new List<ulong>();
    foreach (var body in data)
    {
        if (body == null)
        {
            _BodyManager.SetVGBReaderPauseState(true);
            continue;
        }
        if (body.IsTracked)
        {
            _BodyManager.SetVGBReaderPauseState(false);
            trackedIds.Add(body.TrackingId);
            _VGB_Source.TrackingId = body.TrackingId;
            DetectTargetGestureOnBodies("SwipeRight", body.TrackingId.ToString());
        }
    }
}

在一个单独的BodySourceManager类中,我打开kinect传感器并初始化VisualGestureBuilderFrameSource对象。从这个脚本附加到一个空的GameObject,我想看看手势&#34; SwipeRight&#34;被检测到。

有没有人对Unity为什么会冻结多个实体有任何想法,或者如果有人知道可以使用多个实体的样本,那将非常受欢迎。

0 个答案:

没有答案