(日記のまとめページはこちら:https://wakky.tech/unity-baseball-game/)
前回は制限時間が0になったときに、ボールの撃ち出しとBGMをストップさせた。今回は、上記の処理と同時にゲーム画面上に「ゲーム終了」という文字を表示させたいと思う。方法は色々ありそうだが、今回はSetActiveを使ってテキストを制御して実現する。
https://docs.unity3d.com/jp/540/ScriptReference/GameObject.SetActive.html
まずはCanvasで右クリックして、UI→Textで新しくTextを追加し、「GameOver」という名前に変更する。次にデカデカと「ゲーム終了」と表示させる・・・つもりが、FontSizeを27を超えると文字が消えてしまう。ググってみると、以下に解決法が載っていた。
http://gowalk.hatenablog.com/entry/2017/04/04/173156
Rect TransformのWidthとHeightを大きくすれば、FontSizeも大きくできた。
このままだと、ゲーム中ずっと文字が表示されたままになってしまうので、以下のScriptを使って文字表示を制御する。
https://gist.github.com/WakkyFree/d7b3a3b291890728c124a2191684fce8/a5886705bb46cd1497fe45c5ff7f3b5a5bc911be
まず、対象のオブジェクトをStartでfalseにして隠す。その後、制限時間(前回、publicにした変数CountDownTimer.gameTimerInt)が0になったら、オブジェクトをtrueにして表示する。ScriptはGameOverの親オブジェクトであるCanvasに付加し、以下の画像のようにInspectorからGamaOverオブジェクトを追加する。
(※GameOverオブジェクト自体にScriptを付加すると、初期化時に非アクティブにした後、再びアクティブにできなくなるので注意)
これで、制限時間が0になったら画面上に文字が表示されるようにすることができた。次回は画面遷移の準備編として、遷移先の画面をつくっていきたいと思う。