Unity公式チュートリアルSurvival Shooter日本語実践Chapter.8

8.Scoring points

今回は、Enemyを倒したときにスコアを獲得する処理を実装する。大きく分けて下記の段取りだ。

1.スコアを表示するUIを準備
2.Enemyを倒したとき、そのUIを書き換えるスクリプトを実装

スコアを表示するUIを準備

HUDCanvasの子オブジェクトとしてUIのTextをオブジェクトを作成。アンカーを中央上部に設置したら、Positionを(0、-55,0)に設定。Widthを300、Heightを50、textのColorを白、FontをLuckiestGuy、FontSizeを50に設定。Alignmentも真ん中中央に揃え、テキストの内容を”Score:0″に変更しておく。
文字に影をつけるためShadowComponentをアタッチしたら、EffectDistanceを(2,-2)に設定しておく。これは、文字の影を本体からどのくらいの場所に置くか、の設定であり、数字を大きくすればその分だけ影が文字から離れていく。

Enemyを倒したとき、そのUIを書き換えるスクリプトを実装

ScoreManagerをScoreTextにアタッチ。ScoreManagerの中身を確認しよう。

ScoreManager スクリプト

変数

public static int score:獲得したScoreを格納する。public staticの説明はちょっと適切にできる自信がないが、下記のように解釈している。

staticでない変数は、このスクリプト≒クラスがアタッチされたオブジェクト毎に生成されている(この生成すること、生成されたものがInstance)。オブジェクトAでは100という値をとっていても、オブジェクトBでは200という値をとっている、ということがあり得るわけだ。
一方staticな変数はクラスに紐づいて生成されている。複数のオブジェクトにスクリプトがアタッチされていようと、オブジェクトAで100という値を記録すれば、オブジェクトBでも100という値に書き換えられる。
また、そのため他クラスから参照する際にFindでオブジェクトを指定する必要がなく、クラスから直接呼び出すことができる。
あと、シーンが変わっても破棄されない。これも、オブジェクトでなくクラスに紐づいているから。

いままでStaticを使ってきた感じと、この動画の中での解説を統合して以上のように解釈してる。もし間違ってたらゴメンナサイ。

Text text:ScoreTextのtextコンポーネントを格納。

Awakeメソッド

text = GetComponent():ScoreTextのtextコンポーネントを格納。
score = 0:Scoreをリセット

Updateメソッド

text.text = “Score: ” + score:Textコンポーネントに文字列”Score: “と整数scoreを代入

EnemyHealthメソッドの修正

Enemy死亡時に実行されるメソッドStartSinkingの中にコメントアウトされていた下記一文をコメント解除。
ScoreManager.score += scoreValue:scoreに、scoreValueの値を代入

実装確認

Enemyを倒したときにScoreに10点加点されることを確認

ZonBunnyをPrefab化

次回、ZonBunnyのスポーンを実装する。それに備えてZonBunnyをPrefab化し、Hierarchyから削除しておく。

以上!前回に比べたらあっという間でしたね~

第9回はコチラ

第7回はコチラ

2件のコメントがあります

コメントを残す

メニューを閉じる