Unity解説 コルーチンを用いたストップウォッチの作成
Unityのコルーチンを使ったストップウォッチをコードで作ったよ。


空のオブジェクトにアタッチして、ゲーム再生をすると起動する💨


【Counter001.cs】
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Counter001 : MonoBehaviour { private GUIStyle fontStyle001; private GUIStyleState styleState001; private float Seconds = 0.0f; public bool CountupFlag = false; private string TimerText; void Start() { //タイマーテキストのフォント設定 fontStyle001 = new GUIStyle(); fontStyle001.fontSize = 100; styleState001 = new GUIStyleState(); styleState001.textColor = Color.black; fontStyle001.normal = styleState001; } //Updateでは、timeScaleで一時停止できないため、FixedUpdateとする。 void FixedUpdate() { if(CountupFlag == false) { StartCoroutine(Countup()); } } IEnumerator Countup() { CountupFlag = true; Seconds += 0.1f; yield return new WaitForSeconds(0.1f); CountupFlag = false; } void OnGUI() { TimerText = Seconds.ToString("F1"); GUI.Label (new Rect (50, 50, 150, 50), TimerText,fontStyle001); if (GUI.Button(new Rect(250, 75, 100, 50), "停止・再開")) { //クリック時の応答・処理 if(Time.timeScale != 0){ Time.timeScale = 0; }else{ Time.timeScale = 1.0f; } } } }
【実行結果】

【参考】
お名前