SimpleTimer.csUnity記事: 目次
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
using System; using System.Collections; using System.Text; using UnityEngine; /// <summary> /// /// Unity 2018.2.10f1 /// /// </summary> public class SimpleTimer : MonoBehaviour { // Use this for initialization private void Start() { // 開始時刻を取得 DateTime startTime = DateTime.Now.AddSeconds(0.6); // 微調整 // タイマー開始(10秒) StartCoroutine(Timer(startTime, 10)); } // タイマー private IEnumerator Timer(DateTime startTime, int setTime) { WaitForSeconds delay = new WaitForSeconds(0.1f); DateTime currentTime; TimeSpan timeSpan; int remain; StringBuilder sb = new StringBuilder(); while (true) { // 0.1秒間隔でループ yield return delay; // 現在時刻を取得して経過時間を算出 currentTime = DateTime.Now; timeSpan = currentTime - startTime; // 指定時間内の場合 if (timeSpan.TotalSeconds < setTime) { // 残り時間の表示 remain = setTime - Convert.ToInt32(timeSpan.TotalSeconds); sb.Append(remain / 60); sb.Append(" : "); sb.Append((remain % 60) / 10); sb.Append(" "); sb.Append((remain % 60) % 10); Debug.Log(sb.ToString()); sb.Length = 0; } // 指定時間を超えた場合 else { // 経過時間の表示 sb.Append(timeSpan.Minutes); sb.Append(" 分 "); sb.Append(timeSpan.Seconds); sb.Append(" 秒 経過しました!"); Debug.Log(sb.ToString()); sb.Length = 0; break; } } } } |