Впервые на русском: Документация Unity для разработчиков. Примеры взаимодействия в VRSampleScenes. Взаимодействия в Menu scene

Продолжаем публикацию эксклюзивной информации для разработчиков Unity. Новый раздел посвящён взаимодействиям в Menu scene.

Документация Unity для разработчиков:

  1. Обзор виртуальной реальности
  2. Проекты сэмплов для виртуальной реальности
  3. Начало работы с VR Development. Основы
  4. Начало работы с VR Development. Создание первого проекта виртуальной реальности
  5. Начало работы с VR Development. Полезная информация для разработки виртуальной реальности
  6. Обзор VREyeRaycaster, VRInput и VRInteractiveItem
  7. Обзор SelectionRadial и SelectionSlider
  8. Примеры взаимодействия в VRSampleScenes. Взаимодействия в Menu scene

Теперь давайте рассмотрим некоторые примеры взаимодействия, которые мы включили в наш проект VR Samples. Мы обсудим некоторые из взаимодействий, которые использует каждая сцена, и как они реализованы.

Каждый экран меню имеет несколько компонентов. Особый интерес представляют здесь MenuButton, VRInteractiveItem и Mesh Collider.

Компонент MenuButton подписывается на события OnOver и OnOut на компоненте VRInteractiveItem, а потому, когда сетка находится над экраном меню, появляется радиальное мню, и, если смотреть в сторону от пункта меню, радиус выбора исчезает. Когда радиальный вид выбора отображается, а Fire1 удерживается, радиус заливается цветом:

Этот класс также подписывается на событие OnSelectionComplete на SelectionRadial, так что, когда радиал заполнен, вызывается HandleSelectionComplete, который вытесняет камеру и загружает выбранный уровень.

 

private void OnEnable ()

{

m_InteractiveItem.OnOver += HandleOver;

m_InteractiveItem.OnOut += HandleOut;

m_SelectionRadial.OnSelectionComplete += HandleSelectionComplete;

}

 

 

private void OnDisable ()

{

m_InteractiveItem.OnOver -= HandleOver;

m_InteractiveItem.OnOut -= HandleOut;

m_SelectionRadial.OnSelectionComplete -= HandleSelectionComplete;

}

 

 

private void HandleOver()

{

// When the user looks at the rendering of the scene, show the radial.

m_SelectionRadial.Show();

 

m_GazeOver = true;

}

 

 

private void HandleOut()

{

// When the user looks away from the rendering of the scene, hide the radial.

m_SelectionRadial.Hide();

 

m_GazeOver = false;

}

 

 

private void HandleSelectionComplete()

{

// If the user is looking at the rendering of the scene when the radial’s selection finishes, activate the button.

if(m_GazeOver)

StartCoroutine (ActivateButton());

}

 

 

private IEnumerator ActivateButton()

{

// If the camera is already fading, ignore.

if (m_CameraFade.IsFading)

yield break;

 

// If anything is subscribed to the OnButtonSelected event, call it.

if (OnButtonSelected != null)

OnButtonSelected(this);

 

// Wait for the camera to fade out.

yield return StartCoroutine(m_CameraFade.BeginFadeOut(true));

 

// Load the level.

SceneManager.LoadScene(m_SceneToLoad, LoadSceneMode.Single);

}

 

Давайте посмотрим на некоторые примеры радиального выбор, обратите внимание на розовые элементы в центре скриншотов ниже:

Только сетка

Пустой вид радиального выбора, так как пользователь смотрит на экран меню

Радиальный выбор заполнен (пользователь смотрит на экран меню и удерживает ввод Fire1)

Мы стараемся поддерживать этот стиль в рамках всего проекта сэмплов с помощью радиальных элементов, которые занимают согласованное количество времени. Мы рекомендуем вам подумать об этом при работе над собственными проектами виртуальной реальности, поскольку согласованность в UX делает условия комфортными для пользователя и помогает ему привыкнуть к тому, что может быть для него новым.

 

Примечание: Данный материал представлен для ознакомления, при перепечатывании ссылка на оригинал обязательна. Если вы хотите принять участие в помощи проекту, пишите на editor@vrgeek.ru

Если вы разработчик и вы хотите продолжить свою карьеру в лучших компаниях России, пишите на editor@vrgeek.ru с пометкой «Работа мечты», и мы поможем вам с этим.