Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity3】uGUIでタイトルとゲームオーバー画面作成(後編)!Application.LoadLevel【コインプッシャー6】

Unity5.0.0f4 Personal(2015年5月)

f:id:hiyotama:20150505151000p:plain

 

 

前回はタイトル画面からゲーム画面へ行くだけで終わってしまったので、今度はゲームオーバーを作りたいと思います〜

 

【目標】タイトル→ゲーム→ゲームオーバーという流れを作る!

 

【課題1】コインを落とすとスコアが−1になるようにする

まずはSceneをtitleからmainに戻しましょう〜

 

f:id:hiyotama:20150501175431p:plain

mainシーンをダブルクリック

 

今回はSpawnerからコインを落とすとスコアが減っていくようにします〜ので、SpawnerScriptに加筆していきます〜以下ソースです!

 

 

 

uScoreがpublic変数なので、例のごとくScoreオブジェクトを指定してあげます〜

 

f:id:hiyotama:20150501175813p:plain

ドラッグ&ドロップ!

 

ボタンをクリックしコインを生成したタイミングで、14行目にあるSendMessageを行い、ScoreオブジェクトのCountDownメソッドを実行しております〜ので、次はScoreScriptに加筆していきます〜

 

 

スコアをマイナスしているだけで、CountUpメソッドと同じやり方です〜

 

これでコインを落とすとスコアが−1になるようになりました〜

 

f:id:hiyotama:20150501180400p:plain

スコアが30から減っていきます

 

【課題2】スコアが0になった時、ゲームオーバーの文字を表示させる

まずは「GAME OVER」の文字を作りましょう〜Create>UI>Textを選択し、名前を「GameOver」に変更して下さい!

 

f:id:hiyotama:20150501180713p:plain

RectTransformにてAnchorを中心に設定し、文字サイズをちょうどいい感じにして下さい!

 

f:id:hiyotama:20150501181038p:plain

GameOverオブジェクトの設定例

 

f:id:hiyotama:20150501181119p:plain

こんな感じ

 

それではGameOverオブジェクトにGameOverScriptを設定したいと思います〜以下ソースです〜

 

 

StartメソッドでTextを無効にし、Loseメソッドが呼ばれた時にTextを有効にしております〜

 

ではLoseメソッドをどこから呼び出せばいいのでしょうか?ScoreをカウントしているのはScoreオブジェクトなので、ScoreオブジェクトについているCountScriptのUpdateメソッドに設定すれば大丈夫です〜以下ソースです〜 

 

 

public変数のGameOverが定義されているので、例のごとく設定してあげましょう〜

 

f:id:hiyotama:20150501182407p:plain

ドラッグ&ドロップ!

 

Updateメソッドにてスコアが0以下になった時、SendMessageによってGameOverScriptのLoseメソッドを呼び出し、ゲームオーバーの文字が表示されるようになりました〜

 

f:id:hiyotama:20150501182725p:plain

 

【課題3】GameOver状態でクリックすると、タイトル画面へ戻る

最後にゲームオーバー画面からクリックした時、タイトル画面へ戻る機能を追加します〜

 

GameOverScriptを加筆修正していきましょう〜

 

 

gameOver状態になったことを示すgameOverflgというBool型の変数を新しく作成します〜

 

ゲームオーバーになり、Loseメソッドが呼び出された時、「Finish」というタグのついた画面上の全てのオブジェクトを、clonesというGameObject配列に格納していきます〜

 

GameObject等変数の型の後ろに[ ]が付いていると配列を表し、ひとつの変数の中に複数のデータを登録しておくことができます〜そして、特定のタグの付いた画面上の全てのオブジェクトを取得する関数が、FindGameObjectsWithTagです〜

 

注意して下さいね〜FindGameObjectWithTagはひとつのオブジェクトしか取得できませんが、FindGameObject「s」WithTagだと、対象の全てのオブジェクトを配列に取得できるのです〜

 

その配列をひとつずつ取り出していくのがforeach構文です〜clonesという先ほど作成した配列の中からひとつずつGameObjectを取り出しobj変数に格納し、ひとつずつDestroyしています〜

 

Destroyする対象はコインプッシャー上に残っているコインなので、CoinPrefabのTagをFinishに変更しましょう〜

 

f:id:hiyotama:20150501185917p:plain

Finishに変更

 

これでゲームオーバーになった時、全てのコインを消し去ることができるようになりました〜

 

そしてgameOverFlgがtrueとなったため、Updateメソッドの処理を実行することができるようになりました〜これにより、ゲームオーバー状態で画面をクリックした時、タイトルへ戻ることができるようになりました!

 

f:id:hiyotama:20150501190139p:plain

ゲームオーバー 全てのコインを消去!

 

f:id:hiyotama:20150501190224p:plain

クリックしてタイトルへ!

 

以上でコインプッシャーのひと通りの機能が実装されました〜

 

お付き合いありがとうございました〜

 

【Unity開発3】下準備【コインプッシャー1/6】

【Unity開発3】プッシャーを動かしてコインを落としたい!【コインプッシャー2/6】

【Unity開発3】画面をクリックしてコインを出現させたい!【コインプッシャー:3/6】

【Unity開発3】前方にコインが落ちた時スコアアップしたい!【コインプッシャー4/6】

【Unity開発3】タイトル画面とゲームオーバー画面を作成する(前編)【コインプッシャー:5/6】

【Unity開発3】タイトル画面とゲームオーバー画面を作成する(後編)【コインプッシャー:6/6(Fin)】