ゲームのクリアを追加する

確認済のバージョン: 5.5

-

難易度: 初級

最後にゲームのクリア条件を追加しましょう。 最後の機能は「ゲーム内のアイテムを全て回収したら「YOU WIN」の文字が表示される」機能です。

この機能を実現する為の必要な要素を考えてみましょう。

  1. ゲームクリアを表す文字
  2. アイテムが全てなくなった判定

では作成していきましょう。

クリア時のUIを作成

ラベルの作成

まずはクリア時のUIを表示します。

  1. HierarchyビューのCreateをクリックします。
  2. UI>Textを選択します。
  3. 作成したTextの名前をInspectorビューで「WinnerLabel」と変更します。

WinnerLabelの追加

ラベルの設定

続いてWinnerLabelオブジェクトの内容を設定します。

  1. HierarchyビューでWinnerLabelオブジェクトを選択します。
  2. InspectorビューでRectTransformの値を以下の値に設定します。

* (PosX:0, PosY:0, Width:300, Height:100) 3. TextコンポーネントのTextを「YOU WIN」に変更します。 4. TextコンポーネントのFontSizeを60に設定します。

WinnerLabelの設定 WinnerLabelのText設定

クリア条件の設定

続いてGameControllerに少し手を加えてクリア条件を設定します。

今回のゲームではアイテムを全て回収する(残りのアイテムが0になる)ことが勝利条件ですので、Itemが見つからなかったら勝利とします。

  1. ProjectブラウザでGameController.csをダブルクリックし、MonodevelopやVisual Studioを起動します。
  2. コードを以下のように修正します。

Code snippet

using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour
{
    public  UnityEngine.UI.Text scoreLabel;

    public void Update ()
    {
        int count = GameObject.FindGameObjectsWithTag ("Item").Length;
        scoreLabel.text = count.ToString ();

        if (count == 0) {
            // クリア時の処理
        }
    }
}

クリア時のラベルの表示

最後にクリア時に初めて「YOU WIN」の文字が表示されるようにします。

GameControllerからWinnerLabelへの参照を設定

今回もWinner Labelへの参照が必要ですが、今までと同様にエディター側で設定します。

  1. GameController.csをMonodevelopやVisual Studioで開きます。
  2. コードを以下のように修正します。

Code snippet

using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour
{
    public  UnityEngine.UI.Text scoreLabel;
    public GameObject winnerLabelObject;

    public void Update ()
    {
        int count = GameObject.FindGameObjectsWithTag ("Item").Length;
        scoreLabel.text = count.ToString ();

        if (count == 0) {
            // クリア時の処理
        }
    }
}

設定後、Unityエディタへ戻り、GameControllerからWinnerLabelへの参照を構築します。

  1. HierarchyビューでGameControllerを選択します。
  2. HierarchyビューのWinnerLabelをInspectorビューのGameControllerコンポーネントのwinner Label Objectへドラッグ&ドロップします。

WinnerLabelとGameControllerを接続

「YOU WIN」を非表示にする

次はYOU WINを非表示にします。

Unityで描画されているものを非表示にする方法はいくつかありますが、今回はGameObjectを非アクティブにする事で非表示にします。

  1. HierarchyビューでWinnerLabelを選択します。
  2. Inspectorビューでオブジェクトのチェックを外します。

WinnerLabelのActiveをfalseに設定

「クリア時に「YOU WIN」と表示する

クリア時に非アクティブの「Winner Label」をアクティブにすることで、ゲームクリア時にYOU WINと表示します。

Code snippet

using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour
{
    public  UnityEngine.UI.Text scoreLabel;
    public GameObject winnerLabelObject;

    public void Update ()
    {
        int count = GameObject.FindGameObjectsWithTag ("Item").Length;
        scoreLabel.text = count.ToString ();

        if (count == 0) {
            // オブジェクトをアクティブにする
            winnerLabelObject.SetActive (true);
        }
    }
}

ゲームをプレイ

ゲームをプレイしてみてください。 Playerを転がしてアイテムを回収し、最後に「YOU WIN」の文字が表示されます。 YOUWIN