キーを押したままの状態で、徐々に数値が変わっていく仕組みをつくりましょう。
右キーを長押しすれば、ゆっくりと加算され、左キー長押しで減算されます。
Updateの中であっても、急激に数字が上下しないように、タイマーを利用しながら作成しています。
関連記事:
キーを長押しでn秒おきに発射
マウス長押しでn秒おきにミサイル連射
Updateの中でn秒おきにずっと実行する
Updateを使わずにn秒おきにずっと実行する
配列のオブジェクトをn秒おきにすべて出現
指定の座標からn秒おきに発射
ボタンを押した時間だけ飛距離アップ
ボタンを押しているときだけ間隔時間を縮める
マウス長押しで位置をズームアップ
マウス長押しで降下させて離せば引き上げる
テキストの用意
今回はTextMeshProを用いて、数値を確認していきます。
TextMeshProをインポートしましょう。
ヒエラルキー > UI > TextMeshProを選択します。
TMP Importの画面が出ますので、Import TMP Essentialsをクリックしましょう。
Assets内に、TextMeshProのフォルダが確認できます。
Text(TMP)のサイズ、色、位置などを設定します。
このように中央に配置しました。
数値をスクリプトから書き出すので、デフォルトのテキストは消しておきましょう。
キーを押したままで徐々に数字を変える
空のオブジェクトを作成します。
KeyManager.csを作成し、GameObject(空のオブジェクト)に追加します。
KeyManager.csを記述します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; //TextMeshProを扱う際に必要 public class KeyManager : MonoBehaviour { [SerializeField] TextMeshProUGUI countText; private int count; private float timeReset; private float time; void Start() { count = 0; time = 0; timeReset = 0.2f; } void Update() { time += Time.deltaTime; if(time > timeReset) { if (Input.GetKey (KeyCode.RightArrow) && count<10) { count++; time = 0; } if (Input.GetKey (KeyCode.LeftArrow) && count>0) { count--; time = 0; } } countText.text = count.ToString(); } } |
CountTextのフィールドに、Text(TMP)を入れます。
ゲームプレイして、右キーを長押ししてみましょう。
10を上限として、0.2秒おきに少しずつ上昇していきます。
左キーを長押しすれば、少しずつ数が減り、下限値の0で止まります。
関連記事:
キーを長押しでn秒おきに発射
マウス長押しでn秒おきにミサイル連射
Updateの中でn秒おきにずっと実行する
Updateを使わずにn秒おきにずっと実行する
配列のオブジェクトをn秒おきにすべて出現
指定の座標からn秒おきに発射
ボタンを押した時間だけ飛距離アップ
ボタンを押しているときだけ間隔時間を縮める
マウス長押しで位置をズームアップ
マウス長押しで降下させて離せば引き上げる