質問: unity初心者てす。 buttonを押したら1分間のタイマーをスタートする方法をコードを交えて解説おねがいします
回答: 一秒ごとの更新で十分であればコルーチンを使用して ``` int timerTime; //タイマーの秒数 public void OnClick(){ timerTime = 60; //60秒にリセット StartCoroutine("Timer"); //コルーチンの開始 } //コルーチン private IEnumerator Timer() { while(timerTime > 0){ yield return new WaitForSeconds (1.0f); //1秒待機 timerTime--; //タイマーの数値を1ずつ減らす } } ``` でできます。 1フレームごとに細かい更新をしたい場合はTimeクラスを用いて ``` float timerTime; //タイマーの秒数 public void OnClick(){ timerTime = 60f;//60秒にリセット } void Update(){ if (timerTime > 0) timerTime -= Time.deltaTime;//1フレームの更新にかかった時間を引く } ``` という方法でできます。 後者のほうが一般的に使われますが、「コルーチンって何?」ということであればあえて前者を使用して、更に勉強する、といったこともありではないでしょうか。 また、前のコードはカウントダウン方式を取っていますが、0から60まで(ストップウォッチ的)、といった場合は ``` int timerTime; //タイマーの秒数 public void OnClick(){ timerTime = 0; //0秒にリセット StartCoroutine("Timer"); //コルーチンの開始 } //コルーチン private IEnumerator Timer() { while(timerTime < 60){ yield return new WaitForSeconds (1.0f); //1秒待機 timerTime++; //タイマーの数値を1ずつ増やす } } ``` ``` float timerTime; //タイマーの秒数 public void OnClick(){ timerTime = 0f;//0秒にリセット } void Update(){ if (timerTime < 60) timerTime += Time.deltaTime;//1フレームの更新にかかった時間を引く } ``` のように書き換えればできます。 ここで紹介したのはタイマー部分のシステムだけです。 画面上に表示する方法やボタンが押されたときに実行する方法は省略します。 そこはまた自分で調べて、わからない所があればまた質問するなどして一つ一つ解決していきましょう。