Как разместить префаб, а затем удалить его голосом, если посмотреть на - PullRequest
0 голосов
/ 31 мая 2019

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

Я попытался создать экземпляр объекта и добавить скрипт Intractable. Но я застрял, добавив добавление событий OnfocusEnter и OnfocusExit во время выполнения.

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

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Я разработал это на 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

0 голосов
/ 04 июня 2019

На основе ответа @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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...