MRが楽しい

MRやVRについて学習したことを書き残す

MRTKのSliderから発生イベントと値を取得する

本日は MRTK の技術調査枠です。
MRTKのSliderから発生イベントと値を取得する手順を記事にします。

MRTKのSlider

MRTK には Slider という操作UXのテンプレートが含まれています。
摘みを操作することで連続的な値を直感的に設定することができます。
microsoft.github.io

Sliderの利用方法

Slider は[Mixed Reality Toolkit Foundation/SDK/Features/UX/Prefabs/Sliders]配下の PinchSlider.prefab をシーンに配置することで利用できます。
f:id:bluebirdofoz:20210114221115j:plain

またはメニューから[Mixed Reality Toolkit -> Toolbox]で[MRTK Toolbox]画面を開き、Slider を選択することで利用できます。
f:id:bluebirdofoz:20210114221126j:plain

シーンを再生すると動作が確認できます。
摘みの部分をハンドレイ、または、グラブ操作で掴んで操作することができます。
f:id:bluebirdofoz:20210114221137j:plain

値の取得方法

Slider の変更イベントを取得するには以下のイベント関数を利用します。
・OnValueUpdated:スライダーの値が変更されると呼び出されます
・OnInteractionStarted:ユーザーがスライダーを掴んだ際に呼び出されます
・OnInteractionEnded:ユーザーがスライダーを離した際に呼び出されます
・OnHoverEntered:ユーザーの手が近距離または遠距離インタラクションを使用してスライダーに触れた際に呼び出されます
・OnHoverExited:ユーザーの手がスライダーから離れた際に呼び出されます。

コード例として以下のサンプルスクリプトを作成しました。
・SliderEventTest.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// SliderEventData を利用するため
using Microsoft.MixedReality.Toolkit.UI;

public class SliderEventTest : MonoBehaviour
{
    // OnSliderUpdated 設定用関数
    public void DebugOnSliderUpdated(SliderEventData eventData)
    {
        Debug.Log("OnValueUpdated Event:" + eventData.NewValue);
    }

    // OnInteractionStarted 設定用関数
    public void DebugOnInteractionStarted(SliderEventData eventData)
    {
        Debug.Log("OnInteractionStarted Event:" + eventData.NewValue);
    }

    // OnInteractionEnded 設定用関数
    public void DebugOnInteractionEnded(SliderEventData eventData)
    {
        Debug.Log("OnInteractionEnded Event:" + eventData.NewValue);
    }

    // OnHoverEntered 設定用関数
    public void DebugOnHoverEntered(SliderEventData eventData)
    {
        Debug.Log("OnHoverEntered Event:" + eventData.NewValue);
    }

    // OnHoverExited 設定用関数
    public void DebugOnHoverExited(SliderEventData eventData)
    {
        Debug.Log("OnHoverExited Event:" + eventData.NewValue);
    }
}

サンプルスクリプトを適当なオブジェクトにアタッチします。
f:id:bluebirdofoz:20210114221156j:plain

PinchSlider の各イベントに作成した関数への参照を設定します。
f:id:bluebirdofoz:20210114221209j:plain

シーンを再生して Slider を操作すると各種イベントが発生し、その時点の値が取得できる様子がログで確認できます。
f:id:bluebirdofoz:20210114221219j:plain