
レッスン 5.2 - スコアを保持する
Tutorial
Beginner
+0XP
70 mins
(129)
Unity Technologies

概要:
オブジェクトがシーンに飛んできて、プレイヤーはクリックして破壊できますが、それ以外何も起こりません。このレッスンでは、プレイヤーが得た点数を追跡して表示するユーザーインターフェースを作ります。各標的オブジェクトに異なるポイント値を与え、クリックすると点数が加算されたり減算されたりするようにします。また、各標的を破壊したときに表示される小気味の良い爆発エフェクトを追加します。
プロジェクトの成果物:
「Score:」と点数を表示する UI が追加されます。点数は最初 0 です。プレイヤーが標的をクリックするとスコアが更新されます。また、標的が破壊されるとパーティクルが弾けて飛びます。前のレッスンで「Good」と名がつけられた標的はスコアにそれぞれ設定された点数を加算し、「Bad」ターゲットはスコアから点数を減らします。
Languages available:
1. 導入
2. 画面上にスコア表示のテキストを配置する
はじめての UI 要素を追加して、画面上にスコアを表示してみましょう。
- Hierarchy で、Create > UI > TextMeshPro text の順に選択して、プロンプトが表示されたら、「Import TMP Essentials」ボタンをクリックして、インポートします。
- 新しいオブジェクトの名前を「Score Text」に変更し、ズームアウトしてシーンビューにキャンバスを表示します。
- 位置の基準が左上に固定されるようにアンカーポイントを変更します。
- インスペクターで、Pos X と Pos Y を変更して、UI が左上に表示されるようにします。
3. スコアテキストのプロパティを編集する
シーン内の適切な位置に基本的なテキストが配置されたので、次はプロパティを編集して、見栄えが良く、内容が正しいテキストが表示されるようにしましょう。
- text を「Score:」に変更します。
- 背景になじむように Font Asset(フォントアセット)、Style(スタイル)、Size(サイズ)、Vertex color(頂点の色)を選びます。
4. スコアのテキストと変数を初期化する
UI にスコアを表示する領域ができあがりましたが、そこには何も表示されていません。UI にスコア変数を表示して、プレイヤーが自分の得点を追跡できるようにする必要があります。
- At the top of GameManager.cs, add “using TMPro;”
- Declare a new public TextMeshProUGUI scoreText, then assign that variable in the inspector
- Create a new private int score variable and initialize it in Start() as score = 0;
- Also in Start(), set scoreText.text = "Score: " + score;
- GameManager.cs の先頭に「using TMPro;」を追加します。
- 新しく public TextMeshProUGUI scoreText; を宣言し、インスペクターで変数に値を代入します。
- 新しく private int score 変数を作成し、Start() で score = 0; として初期化します。
- 同じく Start() で scoreText.text = "Score: " + score; と設定します。
5. 新しく UpdateScore メソッドを作る
スコアのテキストはスコア変数の値を間違いなく表示していますが、表示される値が更新されません。UI に表示する点数を累算していく関数を新たに書く必要があります。
- 新しく 1 つの int 型のパラメーター scoreToAdd を取る private void UpdateScore() メソッドを作成します。
- scoreText.text = "Score: " + score; を切り取って新しいメソッドに貼り付け、Start() で UpdateScore(0) を呼び出します。
- UpdateScore() で、スコアをインクリメントするために score += scoreToAdd; を実行するように書きます。
- spawnTarget() 関数で UpdateScore(5) を呼び出します。
6. 標的を破壊したときにスコアを加算する
これでスコアを更新するメソッドができたので、標的が破壊されたときに標的のスクリプトで呼び出してみましょう。
- GameManager.cs で UpdateScore メソッドを public にします。
- Target.cs で、private GameManager gameManager; への参照を作成します。
- Start() で Find() メソッドを使用して GameManager を初期化します。
- 標的が破壊されたら、UpdateScore(5); を呼び出すようにします。また、SpawnTarget() からメソッドの呼び出しを削除します。
7. 各標的に点数の値を割り当てる
標的がクリックされるとスコアが更新されますが、それぞれの標的で異なる点数だけスコアを更新するようにしましょう。クリックするべきオブジェクトは点数に加算し、クリックしてはいけないオブジェクトは点数を減らすようにします。
- Target.cs で、新しく public int pointValue 変数を作成します。
- 標的プレハブの各インスペクターで、Point Value の値をそれぞれの標的をクリックしたときにスコアに加算される値に設定します。クリックしてはいけない標的の場合は負の値を設定します。
- 新しい変数を使って、UpdateScore(pointValue); と呼び出すように変更します。
8. 爆発するパーティクルを追加する
スコア表示に必要な機能は揃いましたが、標的をクリックしたときの動作に少し不満が残ります。画面を引き締めるために、標的がクリックされた時に爆発を表現するパーティクルを表示するようにしてみましょう
- Target.cs で、新しい public ParticleSystem explosionParticle 変数を追加します。
- 各標的プレハブについて、Course Library > Particles にあるパーティクルのプレハブをから Explosion Particle 変数に割り当てます。
- OnMouseDown() 関数で、新しい爆発プレハブのインスタンスを作成します。
9. レッスンのまとめ
新しい機能:
- 画面上のスコア用の UI 要素
- プレイヤーのスコアは追跡され、標的をクリックしたときのスコアを表すテキストが表示される
- プレイヤーがオブジェクトをクリックすると爆発のパーティクルが再生される
新しい概念とスキル:
- Text Mesh Pro
- Canvas
- アンカーポイント
- ライブラリのインポート
- パラメーターを使用したカスタムメソッド
- 他のスクリプトからメソッドを呼び出す
次のレッスン:
- ゲームが終わったことをプレイヤーに伝え、ゲームをリセットするための UI 要素を作成します。