Как разместить префаб, а затем удалить его голосом, если посмотреть на

Пользователь может размещать объекты (префабы) во время выполнения, используя руки / взгляд. Голосовая команда "Удалить" должна удалить текущий сфокусированный (просмотренный) объект.

Подключение событий на сборном не будет работать, так как ссылки находятся на сцене.

0 ответов

Я проработал это на GitHub и разместил здесь, чтобы мы могли удалить его из других источников.

Я еще не занимался голосовым вводом, так как я еще не участвую в собственном проекте MRTK.

Эта заявка должна охватывать этот ответ для MRTK версии RC1. Это была быстрая работа, чтобы показать доказательство концепции - не стесняйтесь изменять и продолжать, но я не буду:)

Для размещения во время выполнения вам просто нужно добавить метод для создания экземпляра объекта, который содержит всю информацию, которую я установил в этом примере. В канале GitHub были и другие решения, я скопировал ссылки ниже (не уверен, как долго они будут активны). В этом примере предполагается, что у вас уже есть своего рода префаб по умолчанию с частью интерактивного класса MRTK.

Другие обсуждения на GitHub от Microsoft: https://github.com/microsoft/MixedRealityToolkit-Unity/issues/4456

Пример видео находится здесь: https://www.youtube.com/watch?v=47OExTOOuyU&feature=youtu.be

Пример пакета Unity находится здесь: https://github.com/JShull/MRTKExamples

Основываясь на ответе @jShull, я придумал простое решение для того, что мне нужно. Поскольку нет глобального слушателя для событий фокуса, я в основном сделал свой собственный.

Я также добавил более раннее обсуждение (до того, как я разместил здесь вопрос) с двумя разработчиками Microsoft Mixed Reality Toolkit, которые могут помочь вам в поиске дополнительных функций: 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.

Другие вопросы по тегам