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
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回はコチラ
「Unity公式チュートリアルSurvival Shooter日本語実践Chapter.8」への2件のフィードバック