本日はUnity枠です。
Unityではエンジン内蔵の機能を使用することで飛躍的なスピードでアプリケーションの開発が可能です。
その中でUIでスライダーが提供されています。
今回はこちらの使い方を見ていきます。
〇環境
・Unity2022.3.21f1
・Windows11PC
〇Unityのスライダー
筆者はXRアプリを作る際にMRTKで提供されているスライダーばかり触っていたので実はGUIのスライダーは初めて触っています。
Unityのスライダーはヒエラルキーウィンドウで右クリック、CreateコマンドからUIの中から作成が可能です。

GUIのためCanvasオブジェクトの子オブジェクトとしてRectTransformで配置されます。

ではこのスライダーの変化をスクリプトで扱っていきます。
次のようなスクリプトを用意しました。
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class test : MonoBehaviour
{
public Slider Slider;
void Start()
{
Slider.onValueChanged.AddListener(OnValueChanged);
}
void OnValueChanged(float value)
{
Debug.Log("スライダーの値が変わりました: " + value);
}
}
このスクリプトではUnityEngine.UIのネームスペースを使用してSliderクラスを使用しています。
スタート関数でonValuseChanged.AddListener(関数)を追加することでスライダーの値の変化を受け取る関数を登録できます。
ここではOncalueChangedというメソッドを追加しています。
こちらでは引数にfloat値を持つことでこの値を使用することができるようになります。
このコードを実行すると次のようにログ画面に値が表示されました。

スライダーの値が変化するときのみイベントが発火するため非常に便利で使いやすい機能になります。
また複数のスライダーを登録し、引数にString型などの識別子を持たせることで一つの関数でスライダーごとに処理を切り替えることができます。
private void Start()
{
_SliderX.onValueChanged.AddListener((value) => OnSliderValueChanged(value, "X"));
_SliderY.onValueChanged.AddListener((value) => OnSliderValueChanged(value, "Y"));
_SliderZ.onValueChanged.AddListener((value) => OnSliderValueChanged(value, "Z"));
}
public void OnSliderValueChanged(float value, string axis)
{
if (_currentFKTarget != null)
{
switch (axis)
{
case "X":
break;
case "Y":
break;
case "Z":
break;
}
}
}
本日は以上です。