You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MediapipeUnityPlugins获取手部追踪关键点遇代码报错求助

解决MediapipeUnityPlugins中PoseTrackingGraph事件绑定的报错问题

错误原因分析

  1. CS0079错误:PoseTrackingGraph.OnPoseLandmarksOutput是标准.NET事件,并非Unity的UnityEvent,因此不能使用Unity的AddListener方法,必须用+=运算符绑定事件处理器。
  2. CS0123错误:该事件对应的委托类型是EventHandler<OutputEventArgs<NormalizedLandmarkList>>,要求回调方法必须包含两个参数:object sender(事件触发源)和OutputEventArgs<NormalizedLandmarkList> args(携带输出数据的参数),原方法签名不匹配导致报错。

修正后的完整代码

using UnityEngine;
using Mediapipe.Unity.PoseTracking;
using Mediapipe;
using System;

public class LandmarkProcessor : MonoBehaviour
{
    public GameObject poseTrackingPrefab;
    private PoseTrackingGraph poseTrackingGraph;

    void Start()
    {
        poseTrackingGraph = poseTrackingPrefab.GetComponent<PoseTrackingGraph>();
        // 用+=绑定符合委托签名的事件处理器
        poseTrackingGraph.OnPoseLandmarksOutput += OnPoseLandmarksReceived;
    }

    // 严格匹配EventHandler<OutputEventArgs<NormalizedLandmarkList>>的委托签名
    void OnPoseLandmarksReceived(object sender, OutputEventArgs<NormalizedLandmarkList> args)
    {
        NormalizedLandmarkList landmarkList = args.Value;
        if (landmarkList == null) return;

        Debug.Log($"获取到{landmarkList.Landmark.Count}个姿态关键点");
        // 遍历并处理每个关键点坐标
        for (int i = 0; i < landmarkList.Landmark.Count; i++)
        {
            var landmark = landmarkList.Landmark[i];
            Debug.Log($"关键点[{i}]:X={landmark.X:F3}, Y={landmark.Y:F3}, Z={landmark.Z:F3}");
        }
    }

    void OnDestroy()
    {
        // 对象销毁时解绑事件,避免内存泄漏
        if (poseTrackingGraph != null)
        {
            poseTrackingGraph.OnPoseLandmarksOutput -= OnPoseLandmarksReceived;
        }
    }
}

关键注意事项

  • 必须导入System命名空间,因为EventHandler<T>委托定义在此命名空间下。
  • 需通过args.Value获取实际的关键点数据,不能直接将NormalizedLandmarkList作为回调参数。
  • 务必在OnDestroy中解绑事件,防止对象销毁后事件触发引发空引用异常。

内容的提问来源于stack exchange,提问作者0x5916

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:54:59