ベストタイムを新記録として保持できるように、スクリプトを作成してみましょう。
タイムを競うゲームでは、時間が短いほど良いので、今までに出した最短時間を、自己ベストとして表示します。
この自己ベストタイムは、ゲームを再スタートしても保存されます。
関連記事:
ハイスコアをつくる
ハイスコアをリセットする
点数をテキスト表示
タイマーによる成績で評価ランク
TextMeshProを使用したタイムアップのしくみ
クリックするたびにタイマー作動
キー押下から押下までの秒数をはかる
ベストタイムを新記録として更新
通常タイマーとベストタイムを表示させるために、2つのテキストを作成します。
名前をそれぞれ、TimerTextと、BestTimeTextとしました。
TimerTextを中央大きめに配置、BestTimeTextを左上に小さめに配置しました。
空のオブジェクトを作成します。
TimerText.csを作成し、GameObject(空のオブジェクト)に追加します。
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 49 50 51 52 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TimerScript : MonoBehaviour { private float time; private float bestTime; [SerializeField] Text timerText; [SerializeField] Text bestTimerText; private bool isStop; void Start() { time = 0; bestTime = PlayerPrefs.GetFloat("TIME", 100); } void Update() { //ベストタイムを表示 bestTimerText.text = bestTime.ToString("F2"); //タイマー作動 if(!isStop) { time += Time.deltaTime; timerText.text = time.ToString("F2"); } //左クリックでタイマー停止 if (Input.GetMouseButtonDown(0)) { isStop = true; if(time < bestTime)//ベストタイムを更新 { bestTime = time; PlayerPrefs.SetFloat("TIME", bestTime); PlayerPrefs.Save(); } } //右クリックでベストタイムをリセット if (Input.GetMouseButtonDown(1)) { bestTime = 100; PlayerPrefs.SetFloat("TIME", bestTime); PlayerPrefs.Save(); } } } |
TimerTextと、BestTimeTextのフィールドに、それぞれのテキストを入れます。
ゲームプレイしてみましょう。
右クリックすると、いったんベストタイムが100にクリアされます。
左クリックすると、タイマーがストップ。
ベストタイムが更新されます。
ベストタイムの変数は保持されるため、再びゲームプレイしても、表示され続けます。
関連記事:
ハイスコアをつくる
ハイスコアをリセットする
点数をテキスト表示
タイマーによる成績で評価ランク
TextMeshProを使用したタイムアップのしくみ
クリックするたびにタイマー作動
キー押下から押下までの秒数をはかる