На основе ответа @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;
}
Функция удаления объекта подключается к глобальной голосовой команде «Удалить» в компоненте «Обработчик ввода речи».Он просто удаляет «focussedObject» внутри GameManager.