はじめに
この記事ではSliderの使い方を紹介します。
— YouTubeなら14分52秒で学べます ―
準備
GameObject > UI > Slider でスライダーを設置。
音量調節のようなオブジェクトが設置されますので、
ゲームを実行してドラッグすれば動かせます。
このSliderとゲーム中の数値を結びつけることで、
HPバーや音量調節といったことが行えます。
インスペクターからSliderを操作する
Sliderで主に変更するのは、
- Direction(スライダーの変化の向き)
- Min Value(最小値の設定)
- Max Value(最大値の設定)
- Whole Numbers(チェックを入れると整数のみに制限)
- Value(現在値)
です。
これらの値がゲーム中変化しないのであれば、
このままインスペクター上で数値を打ち込めばいいです。
スクリプトでSliderを操作する
では、スクリプトでスライダーの値を制御していきます。
なお、この記事では、スライダーにスクリプトをアタッチして使用します。
Canvas等にアタッチする場合は
GameObject.Find 等からスライダーを取得してください。
参考記事
【Unity】Tagを使用した高速なオブジェクトの参照方法「FindWithTag」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
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(ユーザーインターフェース)のコンポーネントなので、
取得する際は以下を追加してください。
1 |
using UnityEngine.UI; |
続いて、Slider型を宣言し、コンポーネントを取得。
1 2 3 |
Slider hpSlider; hpSlider = GetComponent<Slider>(); |
「maxValue」でスライダーの最大値の設定、
「value」で現在のスライダーの値を設定できます。
1 2 3 4 5 |
//スライダーの最大値の設定 hpSlider.maxValue = maxHp; //スライダーの現在値の設定 hpSlider.value = nowHp; |
実行すると以下のようになります。
スライダーの変化を察知してメソッドを実行する方法「On Value Change」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
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以上です"); } } } |
1 2 3 4 5 6 7 |
実行結果 //スライダーを動かしたとき 現在値:○○ //現在値が50以上の時 50以上です。 |
リアルタイムに値の変化を取得するには、
「On Value Change」を使用します。
「On Value Change」の右下にある+マークを押してください。
スクリプトがアタッチされているオブジェクトを
Noneのところへドラッグ&ドロップし、
No Functionタブで使用したいメソッドを選択してください。
これでゲームを実行し、スライダーを動かすと、
スライダーのvalueが変更されるたびに
メソッドが実行されます。