-
Notifications
You must be signed in to change notification settings - Fork 17
6.ゲームのクリアを追加する
pollenjp edited this page Oct 5, 2018
·
5 revisions
最後にゲームのクリア条件を追加しましょう。 最後の機能は「ゲーム内のアイテムを全て回収したら「YOU WIN」の文字が表示される」機能です。
この機能を実現する為の必要な要素を考えてみましょう。
- ゲームクリアを表す文字
- アイテムが全て無くなった判定
では作成していきましょう。
まずはクリア時のUIを表示します。
- HierarchyビューのCreateをクリックします。
- UI>Textを選択します。
- 作成したTextの名前をInspectorビューで「WinnerLabel」と変更します。
続いてWinnerLabelオブジェクトの内容を設定します。
- HierarchyビューでWinnerLabelオブジェクトを選択します。
- InspectorビューでRectTransformの値を以下の値に設定します。
(PosX:0, PosY:0, Width:300, Height:100) - TextコンポーネントのTextを「YOU WIN」に変更します。
- TextコンポーネントのFontSizeを60に設定します。
続いてGameControllerに少し手を加えてクリア条件を設定します。
今回のゲームではアイテムを全て回収するする(残りのアイテムが0になる)事が勝利条件ですので、Itemが見つからなかったら勝利とします。
- ProjectブラウザでGameController.csをダブルクリックし、
Monodevelopを起動します。 - コードを以下のように修正します。
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」の文字が表示されるようにします。
今回もWinner Labelへの参照が必要ですが、今までと同様にエディター側で設定してしまいます。
- GameController.csをMonodevelopで開きます。
- コードを以下のように修正します。
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への参照を構築します。
- HierarchyビューでGameControllerを選択します。
- HierarchyビューのWinnerLabelをInspectorビューのGameControllerコンポーネントのwinner Label Objectへドラッグ&ドロップします。
次はYOU WINを非表示にします。
Unityで描画されているものを非表示にする方法は幾つかありますが、今回はGameObjectを非アクティブにする事で非表示にします。
- HierarchyビューでWinnerLabelを選択します。
- Inspectorビューでオブジェクトのチェックを外します。
クリア時に非アクティブの「Winner Label」をアクティブにすることで、ゲームクリア時にYOU WINと表示します。
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」の文字が表示されます。