すくまりのメモ帳すくまりのメモ帳
← 記事一覧に戻る

【Unity】Sliderの使い方とリアルタイムで値を取得する方法

【Unity】Sliderの使い方とリアルタイムで値を取得する方法

はじめに

この記事ではSliderの使い方を紹介します。

準備

GameObject > UI > Slider でスライダーを設置。

音量調節のようなオブジェクトが設置されますので、

ゲームを実行してドラッグすれば動かせます。

このSliderとゲーム中の数値を結びつけることで、

HPバーや音量調節といったことが行えます。

インスペクターからSliderを操作する

Sliderで主に変更するのは、

  • Direction(スライダーの変化の向き)
  • Min Value(最小値の設定)
  • Max Value(最大値の設定)
  • Whole Numbers(チェックを入れると整数のみに制限)
  • Value(現在値)

です。

これらの値がゲーム中変化しないのであれば、

このままインスペクター上で数値を打ち込めばいいです。

スクリプトでSliderを操作する

では、スクリプトでスライダーの値を制御していきます。

なお、この記事では、スライダーにスクリプトをアタッチして使用します。

Canvas等にアタッチする場合は

GameObject.Find  等からスライダーを取得してください。

参考記事

【Unity】Tagを使用した高速なオブジェクトの参照方法「FindWithTag」

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class Test : MonoBehaviour
{
 
    Slider hpSlider;
 
    // Use this for initialization
    void Start()
    {
 
        hpSlider = GetComponent<Slider>();
 
        float maxHp = 200f;
        float nowHp = 100f;
 
        //スライダーの最大値の設定
        hpSlider.maxValue = maxHp;
 
        //スライダーの現在値の設定
        hpSlider.value = nowHp;
 
    }
 
    // Update is called once per frame
    void Update()
    {
        
    }
 
}

SliderはUI(ユーザーインターフェース)のコンポーネントなので、

取得する際は以下を追加してください。

using UnityEngine.UI;

続いて、Slider型を宣言し、コンポーネントを取得。

Slider hpSlider;
 
hpSlider = GetComponent<Slider>();

「maxValue」でスライダーの最大値の設定、

「value」で現在のスライダーの値を設定できます。

//スライダーの最大値の設定
hpSlider.maxValue = maxHp;
 
//スライダーの現在値の設定
hpSlider.value = nowHp;
 

実行すると以下のようになります。

スライダーの変化を察知してメソッドを実行する方法「On Value Change」

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class Test : MonoBehaviour
{
 
    Slider hpSlider;
 
    // Use this for initialization
    void Start()
    {
 
        hpSlider = GetComponent<Slider>();
 
        float maxHp = 200f;
        float nowHp = 40f;
 
        //スライダーの最大値の設定
        hpSlider.maxValue = maxHp;
 
        //スライダーの現在値の設定
        hpSlider.value = nowHp;
 
    }
 
    // Update is called once per frame
    void Update()
    {
        
    }
 
    public void Method()
    {
        Debug.Log("現在値:" + hpSlider.value);
 
        if (hpSlider.value >= 50)
        {
            Debug.Log("50以上です");
        }
 
    }
 
}
実行結果
 
//スライダーを動かしたとき
現在値:○○
 
//現在値が50以上の時
50以上です。

リアルタイムに値の変化を取得するには、

「On Value Change」を使用します。

「On Value Change」の右下にある+マークを押してください。

スクリプトがアタッチされているオブジェクトを

Noneのところへドラッグ&ドロップし、

No Functionタブで使用したいメソッドを選択してください。

これでゲームを実行し、スライダーを動かすと、

スライダーのvalueが変更されるたびに

メソッドが実行されます。

忙しい人のためのUnity入門講座へ戻る