首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法停用游戏对象在统一火星上的身体跟踪丢失

无法停用游戏对象在统一火星上的身体跟踪丢失
EN

Stack Overflow用户
提问于 2022-10-17 10:08:59
回答 1查看 47关注 0票数 0

我已经编写了一个脚本来跟踪和取消跟踪人类身体使用untrack这里一个球gameObject是一个子的身体prreset,这是由Unity提供的。当身体被跟踪时,球体被成功地激活,但当身体丢失时,它不会被停用。下面是剧本。

代码语言:javascript
运行
复制
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);
    }
}

此脚本附加到场景中的空游戏对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-19 02:12:14

我们在论坛上的DM上讨论过这个问题,但是对于任何遇到这个问题的人来说,你想要的是这样的:

代码语言:javascript
运行
复制
    void OnEnable()
    {
        this.SubscribeBodyAdded(OnBodyAdded);
        this.SubscribeBodyRemoved(OnBodyRemoved);
    }
    void OnDisable()
    {
        this.UnsubscribeBodyAdded(OnBodyAdded);
        this.UnsubscribeBodyRemoved(OnBodyRemoved);
    }

听起来这仍然不太有效(OnBodyRemoved没有被调用),这可能是火星上的一个bug。我们正在调查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74095635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档