MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。
Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。
今回は Slider Examples 見ていきます。
〇シーンの概要
このサンプルシーンは、PinchSliderControllの使用方法を示しています。 OnSliderUpdatedのSliderEventDataの値=eventData.NewValueを使用して、他のアクションを実行できます。
〇PinchSlider
縦向きのPinchSliderでは、Platonicオブジェクトのカラーを変化させます。
それぞれRed,Green,Blueに対応しています。
それぞれのsliderには[PinchSlider.cs]というスクリプトがあります。
sliderはこのスクリプトの機能によって動作します。
・SliderRoot ,SliderValue
SloderRootはスライダーのピンチ部分となるオブジェクトです。
SliderValueはスライダーの初期値になります。 この値を0にすることで初期のsliderの値を0にすることができます。
・SliderAxis
スライダーの稼働する軸です。
・SlidreStartDistance ,SliderEndDistance
スライダーの可動域です。
・OnValueUpdated(SliderEventData)
スライダーの値が変更されたときに設定したスクリプトの(SlidereventData)の値に対応させます。
・OnInteractionStarted(SliderEventData)
スライダー稼働時のイベントです。
・OnInteractionEnded(SliderEventData)
スライダーの稼働終了時のイベントです。
・OnHoverEntered(SliderEventData)
スライダー上にフォーカスがあった場合のイベントです。
・OnHoverExited(SliderEventData)
スライダー上からフォーカスが外れた場合のイベントです。
〇SliderChangeColor.cs
サンプルシーンのスライダーではPlatonicオブジェクトのカラーをスクリプトによって変更しています。
//Redのスライダーに対応した処理 public void OnSliderUpdatedRed(SliderEventData eventData) { //MaterialのRendererを子オブジェクトから取得 TargetRenderer = GetComponentInChildren<Renderer>(); if ((TargetRenderer != null) && (TargetRenderer.material != null)) { //MaterialカラーのRedをsliderから取得したeventData.NewValueに対応 TargetRenderer.material.color = new Color(eventData.NewValue, TargetRenderer.sharedMaterial.color.g, TargetRenderer.sharedMaterial.color.b); } }
//Greenのスライダーに対応した処理 public void OnSliderUpdatedGreen(SliderEventData eventData) { //MaterialのRendererを子オブジェクトから取得 TargetRenderer = GetComponentInChildren<Renderer>(); if ((TargetRenderer != null) && (TargetRenderer.material != null)) { //MaterialカラーのRedをsliderから取得したeventData.NewValueに対応 TargetRenderer.material.color = new Color(TargetRenderer.sharedMaterial.color.r, eventData.NewValue, TargetRenderer.sharedMaterial.color.b); } }
//Blueのスライダーに対応した処理 public void OnSliderUpdateBlue(SliderEventData eventData) { //MaterialのRendererを子オブジェクトから取得 TargetRenderer = GetComponentInChildren<Renderer>(); if ((TargetRenderer != null) && (TargetRenderer.material != null)) { //MaterialカラーのRedをsliderから取得したeventData.NewValueに対応 TargetRenderer.material.color = new Color(TargetRenderer.sharedMaterial.color.r, TargetRenderer.sharedMaterial.color.g, eventData.NewValue); } }
・SliderEventData
スライダーの稼働に応じてSliderEventData eventDataとして反映されます。
Float eventData.NewValueとして扱うことで、sliderの稼働に応じた値を扱うことができます。