レッスン 5.4 - 難易度選択
Tutorial
·
Beginner
·
+0XP
·
60 mins
·
(132)
Unity Technologies

概要:
とうとう最後のレッスンです。ゲームの仕上げに、メニューとタイトル画面を追加します。自分でタイトルを作成して、テキストのスタイルを整えて、見栄えを良くしましょう。また、ゲームの難易度を設定する 3 つのボタンを新たに作成します。難易度が高ければ高いほど、標的はより速く出現します。
プロジェクトの成果物:
ゲームを開始すると、目立つ位置にタイトルが表示され、画面の下に 3 つの難易度ボタンが配置されたメニューが表示されます。難易度は標的の出現率に影響を与え、クリックするべき標的が落ちていかないようにするためにより高いスキルが要求されるようになります。
Languages available:
1. 導入
2. タイトルのテキストとメニューボタンを作る
まず最初にやるべきことは、必要な UI 要素をすべて作成することです。大きなタイトル画面と、3 つの難易度ボタンを作ります。
- Game Over テキストを複製して Title テキストになるオブジェクトを作成し、名前、テキストなど、必要なすべての属性を編集します。
- Restart Button ボタンを複製し、その属性を編集して「Easy Button」ボタンを作成します。
- Easy Button を編集したあと複製して、「Mediun Button」と「Hard Button」を作成します。
3. DifficultyButton スクリプトを追加する
難易度ボタンができましたが、押してみても何も起きません。カスタムの機能を持たせるには、まず新しいスクリプトを追加する必要があります。
- 新しく作った 3 つのボタンについて、Button コンポーネントの On Click() セクションで、「-」ボタンをクリックして RestartGame の機能を削除します。
- 新しく DifficultyButton.cs スクリプトを作成し、3 つのボタンすべてにアタッチします。
- スクリプトに「using UnityEngine.UI;」を追加します。
- 新しく private Button button; を作成し、Start() で初期化します。

4. ボタンをクリックしたときに SetDifficulty を呼ぶ
ボタンのスクリプトができたので、SetDifficulty メソッドを作成し、そのメソッドをボタンのクリックに結びつけます。
- 新しく void SetDifficulty 関数を作成し、その中に Debug.Log(gameObject.name + " was clicked"); と書きます。
- ボタンに SetDifficulty 関数を呼び出すためのリスナーを追加します。

5. ボタンを押したらゲームが始まるようにする
タイトル画面は、ターゲットオブジェクトが跳ね返っていることを除けば見栄えよく出来上がっているのですが、ゲームを開始する方法がありません。SetDifficulty と通信できる StartGame 関数が必要です。
- GameManager.cs で、新しく public void StartGame() 関数を作成し、Start() に書いてあるすべての内容をその中に移動します。
- DifficultyButton.cs で、新しく private GameManager gameManager; を作成し、Start() で初期化します。
- SetDifficulty() 関数で、gameManager.startGame(); を呼び出します。

6. StartGame でタイトルスクリーンを非表示にする
ゲーム開始時にタイトル画面を非表示にしたいのなら、部品を個別にオフにするのではなく、空のオブジェクトを作ってその中に格納しておくべきです。空の親オブジェクトを 1 つ非アクティブにするだけでよくなり、かなりの手間が省けます。
- Canvas を右クリックして Create > Empty Object と選択し、作成したオブジェクトの名前を「Title Screen」と変更し、そのオブジェクトに 3 つのボタンとタイトルをドラッグします。
- GameManager.cs で、新しく public GameObject titleScreen; を作成し、インスペクターで Title Screen を割り当てます。
- StartGame() で、Title Screen オブジェクトを非アクティブにします。

7. パラメーターを使って難易度を変える
難易度ボタンを押せばゲームが開始するようになりましたが、どれを押してもゲームの難易度は変わりません。どの難易度ボタンを押したがが標的オブジェクトの出現率に影響を与えるようにしなければなりません。
- DifficultyButton.cs で、新しく public int difficulty 変数を作成し、インスペクターで 「Easy Button」の difficulty は 1、「Medium Button」の difficulty は 2、「Hard Button」の difficulty は 3 とします。
- StartGame() 関数に int difficulty パラメーターを追加します。
- StartGame() で spawnRate /= difficulty; と設定します。
- StartGame(difficulty) に difficulty パラメーターを渡すようにして、DifficultyButton.cs のエラーを修正します。

8. レッスンのまとめ
新しい機能:
- ゲームをスタートさせるタイトル画面
- オブジェクトの出現率を難易度選択によって変える
新しい概念とスキル:
- AddListener()
- スクリプト間でのパラメーターの受け渡し
- 除算代入演算子(/=)
- 子オブジェクトのグループ化