Радиальный набор InteractableToggleCollection и отмена выбора

довольно новичок в разработке MR, так что несите меня сюда

Я пытаюсь использовать Радиальный набор для изменения состояний в моей сцене.

Как я изначально понял, ее использование состоит в том, что функция OnDeselect () будет вызываться для всех остальных дочерних частей радиального набора, которые не нажимаются. Но, похоже, это не так, поскольку любая функция, которую я добавляю в OnDeselect (), не выполняется.

Например: в комплекте

  • Радиальный A (активный)
  • Радиальный B

Выбор Radial B вызовет событие onSelected для Radial B (что происходит) и событие onDeselected для Radial A (чего не происходит)

введите описание изображения здесь

Я также попытался установить для Can Deselect значение true на радиальных кнопках Interactable Script, но это просто переопределено во время выполнения и снова установлено на false.

Если я подхожу к этому неверно и есть лучшая альтернатива для достижения того, что я намереваюсь, пожалуйста, дайте мне знать

Спасибо :)


person S. Razi    schedule 10.01.2020    source источник
comment
Можете ли вы подтвердить, что другой переключатель действительно не выбран (визуально)? В настоящее время они, кажется, действуют как два независимых переключателя ...   -  person derHugo    schedule 10.01.2020
comment
Да, выбор действительно отменяется визуально, поэтому в любой момент времени выбирается только одна радиальная кнопка.   -  person S. Razi    schedule 13.01.2020


Ответы (1)


Да, к сожалению, InteractableOnToggleReceiver выполняется, когда происходит «щелчок».

С помощью компонента InteractableToggleCollection каждый объект Interactable автоматически переключается с помощью свойства IsToggled, а свойство CanDeselect принудительно отключается. Это необходимо для того, чтобы всегда был включен один радиальный префаб.

Я зарегистрировал здесь проблему на github, чтобы отследить https://github.com/microsoft/MixedRealityToolkit-Unity/issues/7165

В качестве временного обходного пути вы можете прослушать InteractableToggleCollection.OnSelectionEvents через код, чтобы узнать, когда радиальный элемент обновился.

person Troy    schedule 27.01.2020