【Unity2D】ゲーム画面にテキストを表示させよう!

おはようございます!あしかぺんぎんと申します。

今回は久しぶりのUnityの続きです(別にサボってたわけじゃないですよ!少し時間がかかっただけです。。。)。

前回まででゲームの根幹の部分はできるようになりましたので、今回からは外側の部分に着手していきたいと思います。

そこで重要になるのがテキスト表示かなと思いました。私の場合はタイマー的な経過時間などを表示させたいと思っております。

そこで、テキスト表示の方法を記載したいと思いますので、よろしくおねがいします。

あしぺん
あしぺん

細かいところをいじろうとするとは難しくて理解するのに時間がかかるね!

テキストの追加

今回は時間経過を示すテキストを表示させたいと思います。参考サイトはこちらです。

あらかじめあるCanvasHierarchyCreateUIからPanelを作成します。

今回名前はTimerにしています。これで今後作るテキストや必要であればボタンなどのGUI(グラフィックユーザインターフェイス)をまとめておくことができます。

そしてされにTimerの中に表示させるTextHierarchyCreateUIから選択して追加します。

こんな感じ↓

TextInspectorの中のTextを変えることでSceneビューTextの表示も変わります。

またColor等でフォントの書式をいじることもできます。

Text Count(Script)部分は後で説明します。

経過時間を表示させる

先程のSceneビューを見るとわかるかもしれませんが、今回作っているのは競艇のレースゲームです。

あしぺん
あしぺん

ボートということは僕の出番はなくなったんですね😢

レースゲームに経過時間は必須ですよね。そこで先程のテキストに経過時間を表示させたいと思います。

表示方法は先程のテキストをスクリプトを使って更新するだけです。

スクリプトはこちらです。

イメージとしてはゲーム開始からまず3秒待ちます。そして3秒経った後から表示を更新します。

ゲームをスタートしてからいきなりスタートするのは突然すぎるのでこうしました。

ゲーム内の経過時間は最後のフレームからの経過時間[ms]が格納されているTime.deltatimeUpdateごとに足していくことでカウントしています。

時間は数値型なので、テキストに表示するためには文字型に変換しないといけません。数値.ToString()で文字列に変換します。逆に文字列から数値にする方法としてはint.Parse(“123”)があるようです。

データの型

データには型があって、それぞれどのような方法でコンピュータの中で表現するかの方法が違います。

型の種類には数値型(整数型、実数型)文字型などがあります。

よくエクセルとかでもセルの書式設定でいろんな設定方法がありますがあのような感じだと思います。

型を理解していないとプログラミングをする上でエラーの原因になります

このあたりはプログラミングを勉強する上で躓きポイントだと思いますが、なれるしかありませんね。

スクリプトをTextにドラッグ&ドロップしてゲームを開始してみます。

レートが違うからかわかりませんが、実際の時間とは異なります。

おおおおおー!

少し間があってから経過時間が表示されていると思います。

ただこれだけだといきなりカウントが始まってしまうので、スタートのタイミングがわかりません。そこで、カウントダウンのテキストも一緒に作ります

カウントダウンを表示させる

方法は経過時間を表示させる方法と同様です。以下のようにCanvasTimerText(2)を追加しました。

Sceneビューの中央に配置しました。

ここにカウントダウンを表示させます。スクリプトを以下のように作成しました。

Text(2)InsepectorTimer Count DownScriptTotal Timeを入力するとその時間からカウントダウンを始めます。今回にしているのは、スクリプトの中で整数型にするときに小数点以下を切り捨てているためです。4からマイナスしていくことで3、2、1の表示が1秒ごとに行われます。そして1より小さくになると0になってしまうので表示を消しています。

表示・非表示

テキストの表示を消す場合はテキスト.GetComponent().enabled = falseを使用しています。逆に表示させる場合には、テキスト.GetComponent().enabled = trueを使いますが、この場合は注意が必要です。

テキストを消すとその存在自体がなくなるので、次にテキストの操作をする場合にその対象が取得できません。ようはtrueにする対象がわからないということです。

テキストをpublic変数に設定します。こうすることでそのスクリプトで表示が消されても再びテキストが取得できるようになります。

また.GetComponent().enabledはオブジェクトには適用できませんので注意が必要です。こちらを参照しました。

このあたりはまだ試行錯誤中ですので間違っていたらすみません。

これでゲームを開始します。

おおおおー!

それっぽくカウントダウンを表示できていて、1が終わったところから経過時間が表示されていると思います。

これでようやくスタートのタイミングがわかるようになりましたね。

まとめ

今回はゲームに必要となるテキストの表示方法と時間の表示方法について説明しました。まとめを以下に示します。

  • CanvasPanelTextを作成する
  • Textにスクリプトを設定してTextを更新できる
  • 経過時間の取得にはTime.deltaTimeが使用できる
  • テキストの表示・非表示にはテキスト.GetComponent().enabledが使用できる

ちょっとづつゲームっぽくなってきました。今後も少しづつ更新していきたいと思います。

参考サイト

コメント

タイトルとURLをコピーしました