用户可以在运行时用手/注视放置对象(预制件)。 语音命令““删除”(Remove)”应删除当前聚焦(注视)的对象。
在现场预制事件的预告片将无法正常工作,因为引用在现场。
答案 0 :(得分:1)
我在GitHub上解决了这个问题,并将其发布在这里,以便我们可以将其从其他来源中删除。
我还没有处理语音输入,因为我还没有参与自己的MRTK项目。
此提交应涵盖RC1版下针对MRTK的答案。只是为了展示概念证明,这是一项快速的工作-随时进行修改并继续进行,但我不会:)
对于运行时放置,您只需添加一个方法来实例化一个对象,该对象包含我在此示例中设置的所有信息。 GitHub频道中还有一些其他解决方案,我已复制了以下链接(不确定它们将处于激活状态的时间)。此示例假设您拥有某种已经具有MRTK可交互类部分的默认预制件。
Microsoft在GitHub上的其他讨论:https://github.com/microsoft/MixedRealityToolkit-Unity/issues/4456
示例视频在这里:https://www.youtube.com/watch?v=47OExTOOuyU&feature=youtu.be
示例Unity包在此处:https://github.com/JShull/MRTKExamples
答案 1 :(得分:0)
基于@jShull答案,我想出了一个简单的解决方案来满足我的需求。由于没有焦点事件的全局侦听器,所以我基本上是自己创建的。
我还与两名混合现实工具包的Microsoft开发人员进行了较早的讨论(在我在此处发布问题之前),这可能会帮助您寻找更多功能:https://github.com/microsoft/MixedRealityToolkit-Unity/issues/4456
“对象”脚本,它是对象的组成部分,需要删除或与之交互。
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;
public class Object: MonoBehaviour, IMixedRealityFocusHandler
{
public GameManager _gameManager;
public void OnFocusEnter(FocusEventData eventData)
{
Debug.Log("Focus ON: " + gameObject);
_gameManager.SetFocussedObject(gameObject);
}
public void OnFocusExit(FocusEventData eventData)
{
Debug.Log("Focus OFF: " + gameObject);
_gameManager.ResetFocussedObject();
}
}
“ GameManager”脚本函数,用于设置focussedObject
public void SetFocussedObject(GameObject object)
{
focussedObject = object;
}
public void ResetFocussedObject()
{
focussedObject = null;
}
“删除对象”功能连接到“语音输入处理程序”组件中的“删除”全局语音命令。它只是删除了GameManager内部的“ focussedObject”。