前提・実現したいこと
unityにて、カウントダウンタイマーアプリを作成中です。
スライダーのバーを引っ張ることで、計測する時間(分)をテキストに表示させて、スタートボタンを押すことでカウントダウンがはじまるようにしました。
現在の仕様ですと、スライダーのバーを引っ張るとテキストには、小数点第2位までの数字が表示される仕組みになっています。
さらに、機能を加えて、スライダーのバーを引っ張って表示する際のみ、決められた時間のみを表示させたいと考えています。
具体的には、5分,10分,15分といった値だけを表示させるといったことをしたいです。
現在は、OnValuechanged()の中で、スライダーの値を取得しています。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System; 6 7public class SliderController : MonoBehaviour 8{ 9 Slider TimeSlider; 10 private GameObject GaugeText; 11 private GameObject CoinText; 12 private int score = 0; 13 private float difference; 14 private float Startvalue; 15 private bool iscount = false; 16 private float nowtime; 17 private float save; 18 private GameObject StopButton; 19 private GameObject StartButton; 20 private GameObject ResetButton; 21 private int Scoreoffline; 22 private GameObject Slider; 23 System.DateTime StartTime = System.DateTime.MinValue; 24 25 // Use this for initialization 26 void Start() { 27 28 TimeSlider = GetComponent<Slider>(); 29 TimeSlider.value = nowtime; 30 31 float maxTime = 120f; 32 33 TimeSlider.maxValue = maxTime; 34 35 this.GaugeText = GameObject.Find("GaugeText"); 36 this.CoinText = GameObject.Find("CoinText"); 37 StartButton = GameObject.Find("StartButton"); 38 StopButton = GameObject.Find("StopButton"); 39 ResetButton = GameObject.Find("ResetButton"); 40 41 } 42 43 // Update is called once per frame 44 void Update() { 45 this.difference = Startvalue - nowtime; 46 47 if (iscount == true && nowtime > 0) 48 { 49 nowtime -= Time.deltaTime; 50 PlayerPrefs.SetFloat("nowtime", nowtime); 51 PlayerPrefs.SetString("DateTime.Now", System.DateTime.Now.ToString()); 52 PlayerPrefs.Save(); 53 float minute = nowtime / 60; 54 this.GaugeText.GetComponent<Text>().text = minute.ToString("f2").Replace(".", ":"); 55 } 56 else if (iscount == true && nowtime <= 0) 57 { 58 nowtime = 0f; 59 } 60 61 62 if (this.difference >= 10) 63 { 64 Debug.Log("difference" + difference); 65 Debug.Log("Test" + "test"); 66 this.score += 100; 67 Startvalue = nowtime; 68 CoinText.GetComponent<Text>().text = this.score + "G"; 69 PlayerPrefs.SetInt("score", score); 70 PlayerPrefs.Save(); 71 Debug.Log(Startvalue); 72 Debug.Log("difference" + difference); 73 } 74 75 } 76 public void CountStart() 77 { 78 Startvalue = nowtime; 79 Debug.Log(nowtime); 80 iscount = true; 81 nowtime = TimeSlider.value * 60; 82 StartTime = System.DateTime.Now; 83 Debug.Log(TimeSlider.value); 84 Debug.Log(Startvalue); 85 //スタートボタンを非表示にする 86 StartButton.gameObject.GetComponent<CanvasGroup>().alpha = 0; 87 StartButton.gameObject.GetComponent<CanvasGroup>().blocksRaycasts = false; 88 //とめるボタンと休憩するボタンの表示 89 StopButton.gameObject.GetComponent<CanvasGroup>().alpha = 1; 90 StopButton.gameObject.GetComponent<CanvasGroup>().blocksRaycasts = true; 91 ResetButton.gameObject.GetComponent<CanvasGroup>().alpha = 1; 92 ResetButton.gameObject.GetComponent<CanvasGroup>().blocksRaycasts = true; 93 } 94 95 public void OnValuechanged() 96 { 97 this.GaugeText.GetComponent<Text>().text = TimeSlider.value.ToString("f2").Replace(".", ":"); 98 } 99 100
試したこと
検索しても、同じようなことをしている方が見当たらず、どうコードを書けば良いのかわからないので質問させていただきました。
補足情報(FW/ツールのバージョンなど)
unity2018.4.17f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/15 00:55