初心者でも簡単にできる!Unityでカウントダウンタイマーを作成する方法

Sponsored Link

Unityでカウントダウンタイマーを作成したい!

どうも、Linです。銭湯が、呼んでます。

 

Unityでアプリを作成しているとつけたくなる機能。

それは、

カウントダウンタイマー機能

ではないでしょうか?

制限時間をつけた方がゲーム性が増して面白くなりますからね。また、ゲームではなくとも、単純なタイマーアプリを作ってみたいというときもあるでしょう。

今日はそんなUnityでのカウントダウンタイマー機能の作り方をわかりやすくまとめてみました。

 

 

Unityでカウントダウンタイマー機能を作成する方法

Unityでカウントダウンタイマー機能を作りたい場合は、

TimeクラスのdeltaTime変数を利用するのが良いでしょう(くわしくはUnityの公式レファレンスへ

 

deltaTime変数は何かというと、

1フレームあたりにかかる時間のことです。

 

unity カウントダウンタイマー

 

わかりやすくいうと、Update関数が読み込まれる時間の間隔。

ゲームが動作するマシーンのスペックにもよるのですが、ぼくのMacでは1フレームあたり

0.016~0.018秒

ぐらいでしたね。

この「TimeクラスのdeltaTime変数」をフレームごとに足したり引いたりするとタイマーが作れるというわけですね。

 

Step1. テキスト配置

タイマーを表示するテキストをヒエラルキーに配置します。

 

 

unity カウントタイマー

 

 

名前をTimerTextとでもしておきましょう。

テキストのフォントや色や位置などはお任せです。

 

Step2. 空のオブジェクト作成

次に、空のオブジェクトを作成します(Ctl+Shift+N)。

タイマーをコントロールするスクリプトをこいつにアタッチしていきますよ。

 

 

unity カウントタイマー

 

Step3. スクリプト作成

タイマーをコントロースするスクリプトを作成。

TimerController.cs

とでもしましょう。

 
https://gyazo.com/61841c122c42afdeb53da2f98bbf8227

 

 

 

作成したら空のオブジェクトGameObjectにアタッチしましょう。

 

 

https://gyazo.com/7199732fca8b8ba3e7994229caac9968

 

 

Step4. コード書く

先ほどのスクリプト(TimerController.cs)にコードを書いていきましょう。

ここでのポイントは、

  • Textクラスを扱うのでusing UnityEngine.UIという名前空間を追加
  • フレームごとにフレームの秒数(Time.deltaTime)を引いている
  • 合計時間の変数totalTimeをpublicにすることでInspectorより変更可能
  • seconds(int型の変数)にfloat型のtotalTimeをintにキャストしたものを代入して小数点以下を抹殺
  • secondsをToStringメソッドで文字列にしてからテキストに表示

という5点ですね。

変数の型がint, float, stringの3種類入り混じってくるのでそこをうまく処理できれば大丈夫です。

 

 

Step5. タイマー時間を設定

タイマー時間をパブリックな関数に設定したのでInspectorから設定しましょう。
https://gyazo.com/bdfb98a81e81ae77bcf4c6bef8e9a736

 

 

今回は60秒と設定してみます。

 

 

Step6. テキストをアウトレット接続

あとはカウントタイマーを表示するテキストをアウトレット接続して代入。
https://gyazo.com/304a440cb36f03a456268cadde14152d

 

 

これでカウントダウンタイマー機能完成です!

 

ゲームを再生してみると、こんな感じで60秒からしっかりカウントダウンできていると思います。
https://gyazo.com/5c22caaa4a9e998ac9c22a9bb3867d8b

 

 

 

逆にカウントアップするタイマーを作りたいときは??

では、今度は逆にカウントダウンではなくカウントアップするタイマーを作りたいときはどうすればいいのでしょうか??

じつはカウントダウンタイマーとの違いは一箇所で、

Time.deltaTimeをフレームごとに引くのではなく足せばいいのです。

 

Update関数を下のように修正して、

totalTime変数を0に変更してみましょう。

 

 

 

https://gyazo.com/d8c583906810b441cf331882bdf523a9

 

 

 

すると、

 
https://gyazo.com/5a7e90a3a6bfe58d6964470c65eeba5e

 

 

うん。0からカウントアップできてますね。

あとはお好みにUnityのタイマーをカスタマイズしてっちゃってくださいね。

 

「なんかタイマーがバグってイライラする・・・!

という方には「teratail」がオススメです。プロのエンジニアの方が質問に答えてくれるので疑問点が解消するはず。

よかったら試してみてください。

 

それでは!

Lin

飯橋凛(Ihashi Lin)

インターネット広告代理店を1年半で退職。
その後、副業として活動していたウェブメディア運営のフリーランスへ。
現在はプログラミングの勉強に励み、0からフリーエンジニアの道を目指す。最近はキムチをまとめ買いにはまっている。


Sponsored Link

コメントはこちらからお願いします!



もう1本読んでみる