我已經使用 Unity MARS SDK 撰寫了一個腳本來跟蹤和取消跟蹤人體,這里將一個球體游戲物件作為 Unity MARS SDK 提供的 body prreset 的子物件。球體物件在跟蹤身體時成功激活,但在身體丟失時不會停用。下面是腳本。
using System;
using System.Collections.Generic;
using Unity.MARS.Data;
using Unity.MARS.Providers;
using Unity.XRTools.ModuleLoader;
using UnityEngine;
using UnityEngine.UI;
public class BodyTrackManager : MonoBehaviour, IUsesMarsBodyTracking, IUsesFunctionalityInjection
{
IProvidesMarsBodyTracking IFunctionalitySubscriber<IProvidesMarsBodyTracking>.provider { get; set; }
IProvidesFunctionalityInjection IFunctionalitySubscriber<IProvidesFunctionalityInjection>.provider { get; set; }
[SerializeField] GameObject testObject;
void Awake()
{
this.EnsureFunctionalityInjected();
}
private void OnEnable()
{
this.SubscribeBodyAdded(OnBodyAdded);
}
void OnDisable()
{
this.UnsubscribeBodyAdded(OnBodyRemoved);
}
void OnBodyAdded(IMarsBody body)
{
testObject.SetActive(true);
}
void OnBodyRemoved(IMarsBody body)
{
testObject.SetActive(false);
}
}
此腳本附加到場景中的空游戲物件。
uj5u.com熱心網友回復:
我們在論壇上的 DM 中討論過這個問題,但對于遇到這個問題的其他人來說,你想要的看起來像這樣:
void OnEnable()
{
this.SubscribeBodyAdded(OnBodyAdded);
this.SubscribeBodyRemoved(OnBodyRemoved);
}
void OnDisable()
{
this.UnsubscribeBodyAdded(OnBodyAdded);
this.UnsubscribeBodyRemoved(OnBodyRemoved);
}
聽起來這仍然不太有效(OnBodyRemoved 沒有被呼叫),這可能是 MARS 中的一個錯誤。我們正在調查它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518180.html
標籤:C#unity3d
