どうも音無サノトです(^^♪
週末のゲーム制作記事になります。前回はアイテムの取得処理を作ったので、今回は取得した数をゲーム内に表示します。
アイテムの取得数をカウントする
それではまず、アイテムを取得した際に、その数をカウントする処理を制作します。
PlayerContoller を以下のように変更します。
それではコードの説明です。
まずアイテム数をカウントする変数を用意します。
その変数を Start() 関数内で初期化します。
アイテムを取得した際にカウントしたいので、OnTriggerEnter() 関数内のアイテム取得時の処理内にカウントする処理を追加します。
これでアイテムの取得数をカウントする処理が書けました。
取得数を表示する
アイテムの取得数を表示するためのテキストを用意します。
Unity には便利な UI 機能があるのでそれを利用します。
Hierarchy ウィンドウの Create から UI > Text を選択します。
するとテキストが追加されました。
Canvas の子オブジェクトに Text が自動で用意されます。
Unity の UI 要素は Canvas 内で管理するため、すべて Canvas の子オブジェクトにする必要があります。
EventSystem オブジェクトは Canvas のメッセージシステムとして利用するものです。
テキストを追加したら、名前を「Count Text」に、文字の色を白に、デフォルトのテキスト表示を「Count Text」に変更します。
次にテキストの表示場所を変更します。
Inspector ウィンドウの Rect Transform の下にあるアイコンをクリックして、Anchor Presets を表示します。そして左隅をクリックします。
Shift キーを押すと、画面のどのポジションに映るかが青い点で表示されます。Alt キーを押すと画面そのものがどの位置に表示されるかがわかります。
ゲームシーンの左隅にテキストが表示されます。
この状態だと、左隅に寄りすぎなので、ポジションを調整します。
いい感じの場所に表示されました。
次にテキストの表示をスクリプトで変更できるようにコードを追加します。
PlayerContoller に処理を以下のように変更します。
それではコードの説明です。
まず using ステートメントを使って UnityEngine.UI クラスを使用できるようにします。
これは別の名前空間で定義されたクラスを利用する際に使用する C# の書き方です。別のところに用意された処理を使用したいときに、「ここで定義されている処理をつかうよ」と宣言しているイメージです。
それからカウントを表示するテキストを public で宣言しておきます。
それから処理が重複するので、一つの関数にまとめておきます。
一番下に以下の処理を用意しておきます。
先ほど、宣言したカウントを表示するテキストの表示を変更しています。
"Count : " という文字列に count の数値を String 型に変更してから連結しています。
count は Int 型で宣言されているので ToString() という処理を使って、 String 型にする必要があります。
プログラミングは変数の型か異なっていると処理に不具合が生じるので、型を統一する考えは非常に重要です。
そして、Start() 関数内と OnTriggerEnter() 関数内に、テキスト表示の変更処理を追加します。
Hierarchy ウィンドウで Player を選択し、Count Text のところにテキストオブジェクトをドラッグ&ドロップします。
実際にゲームを再生してアイテムを取得してみると、カウントの表示が変わるのが確認できます。
全部取得した際のテキストを表示する
アイテムを全部取得した際に、ゲームをクリアしたことを伝えるテキストを表示しましょう。
先ほど、Count Text を追加したときと、同じように Hierarchy ウィンドウの Create から UI > Text を選択してテキストを追加します。
名前を「Win Text」、文字の大きさを24、文字の色を白、デフォルトの表示を「Win Text」に変更します。
ポジションをセンターにします。
それから文字の表示を真ん中にし、Y軸方向のポジションを調整します。
いい感じの位置に表示されるようになりました。
それでは、アイテムを全部取得した際にテキストを表示できるように PlayerContoller の処理を以下のように変更します。
処理の説明です。
まず、テキストを格納する変数を用意しています。
Start() 関数内で初期化しています。
先ほど用意した SetCountText() 関数内の処理に追加します。
if 文を使って count の数値を判定しています。
この場合、12個になったら「You Win!」という文字列を表示するようになっています。
if 文のところは Pick Ups の子オブジェクトの個数と比較する様に変更した方がプログラムとしてはよりいいコードになります。
そうすることで、アイテム数を増やしてもコードを変更する必要がないからです。
が、今回はチュートリアル通りにゲームを作って、全部終わった後に変更していきましょう。
コードを書いたら、Hierarchy ウィンドウで Player を選択して、Win Text をドラッグ&ドロップします。
ゲームを再生させて、全部のアイテムを取得したら「You Win!」が表示されることを確認しましょう。
これで一通りゲームっぽいものができました。
次回はチュートリアルの最後であるゲームのビルドを行います。ビルドとはプログラムをソフトにするって感じの意味です。
これをやればチュートリアルは終了なので、そこから少しこのゲームを改造していこうかなと思います。
本日は以上となります。最後まで読んでいただきありがとうございました!