不管是图像识别、人脸、人体插件给的回调入口基本都是一样的,都是依靠一个事件
using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
using UnityEngine.XR.ARFoundation;
using UnityEngine.Events;
public class HumanBodyInvoke : MonoBehaviour
{
//检测人体进入和离开!以及更新!并且把回调入口放到外面的监视Inspector面板
public ARHumanBodyManager MyHumanBodyComp;
public ARFaceManager MYFaceDe;
public ARTrackedImageManager MyimageT;
public ARPointCloudManager pion;
[Header("这是一个事件")]
public UnityEvent HumanFound;
void Start()
{
MyHumanBodyComp.humanBodiesChanged += MyHumanBodyComp_humanBodiesChanged;//事件(触发)+执行、事件与委托
MYFaceDe.facesChanged += MYFaceDe_facesChanged;
MyimageT.trackedImagesChanged += MyimageT_trackedImagesChanged;
pion.pointCloudsChanged += Pion_pointCloudsChanged;
}
void xuni()
{
}
private void Pion_pointCloudsChanged(ARPointCloudChangedEventArgs obj)
{
}
private void MyimageT_trackedImagesChanged(ARTrackedImagesChangedEventArgs obj)
{
//函数 做一件具体的事情的最小单位!
Debug.Log("图像进入或离开摄像头或在运动");
}
private void MYFaceDe_facesChanged(ARFacesChangedEventArgs obj)
{
//函数 做一件具体的事情的最小单位!
Debug.Log("人脸进入或离开摄像头或在运动");
}
private void MyHumanBodyComp_humanBodiesChanged(ARHumanBodiesChangedEventArgs obj)
{
//函数 做一件具体的事情的最小单位!
Debug.Log("人体进入或离开摄像头或在运动");
foreach (var item in obj.added)
{
//当前遍历到的那个人体信息
Debug.Log("人体进入" + item.pose);
//===============
HumanFound.Invoke();//激活事件!
}
foreach (var item in obj.removed)
{
//当前遍历到的那个人体信息
Debug.Log("人体离开" + item.pose);
}
foreach (var item in obj.updated)
{
//当前遍历到的那个人体信息
Debug.Log("人体运动" + item.pose);
}
}
}