【2Dシューティング】Unity公式チュートリアルをやってみる8回目。タイトルをつける

こんにちは。【2Dシューティング】Unity公式チュートリアルをやってみるシリーズの8回目です。前回は自機の移動制限と修正を行いました。
【2Dシューティング】Unity公式チュートリアルをやってみる7回目。自機の移動制限

今回はゲームタイトルをつける作業をやっていきます。

ゲームタイトルをつけよう

ここでやること

  • タイトルを作る
  • タイトル用のスクリプトを作成
  • PlayerScriptとEmitterScriptの修正
  • 空のゲームオブジェクトManagerをつくってManagerScirptをアタッチ

タイトルを作ろう

公式チュートリアルがだるいことをさせようとしてくるので、普通にテキストで作りました。GUI Textを使おうとしたら表示されないので困った。

かわりにUI Textを表示させようとしたら、これも表示されないのでこれも困った。すぐ解決したが、Textが消える現象があるので参考まで↓
UnityでUI Textが消えてしまうときの解決策

タイトルなんか適当につくれやええんです。

タイトル用のスクリプトをつくろう

Xボタンを押したらPlayerが登場するようなスクリプトを書いていく。Playerオブジェクトは一旦消しておく

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ManagerScript : MonoBehaviour {
	public GameObject player;//PlayerPrefab
	private GameObject title;

	void Start () {
		//Titleゲームオブジェクトを検索し取得する
		title = GameObject.Find("Canvas");
	}

	void Update () {
		//Xキーが押されたらtrue
		if(isPlaying() == false && Input.GetKeyDown(KeyCode.X)){
			GameStart();
		}
	}

	void GameStart(){
		//ゲームスタート時にタイトルを非表示にしてプレイヤーを作成する
		title.SetActive(false);
		Instantiate(player, player.transform.position, player.transform.rotation);
	}

	public void GameOver(){
		title.SetActive(true);//ゲームオーバー時Title表示
	}

	public bool isPlaying(){
		//ゲーム中かどうかはタイトルの表示/非表示で判断
		return title.activeSelf == false;
	}
}

Xキーが押されたらプレやイヤーが作成されゲームがはじまる。プレイヤーが死んだらtitleを表示するGameOver()メソッドも定義してある。

PlayerScriptとEmitterScriptで呼び出そう

PlayerScriptでしんだときGameOver()メソッドをよびださないといけない。

  void OnTriggerEnter2D (Collider2D c){
    // Managerコンポーネントをシーン内から探して取得し、GameOverメソッドを呼び出す
    FindObjectOfType<ManagerScript>().GameOver();
    Destroy(c.gameObject);//弾の削除
    spaceship.Explosion();//爆発する
    Destroy(gameObject);//プレイヤーの削除
  }

EmitterScript(敵の軍隊を呼び出すスクリプト)はTitle表示中は待機させておく必要がある

//略
private ManagerScript manager;
//略
IEnumerator Start(){
	//Waveが存在しなければコルーチンを終了する
	if(waves.Length == 0) yield break;

	// Managerコンポーネントをシーン内から探して取得する
     manager = FindObjectOfType<ManagerScript>();

	while(true){
		 // タイトル表示中は待機
		while(manager.isPlaying() == false) {
			 yield return new WaitForEndOfFrame ();
          }
		  
	//略
	
	}
}

これらが終わったら空のゲームオブジェクトを作る。名前はManagerにする。ManagerScriptをアタッチしたら。PlayerPrefabをアタッチ。だるすぎる。以下が画像。
screenshot 20181213 2030

ここまでの状態

Xキーが押されるとゲームが始まり、死ぬとまたタイトルが表示される。
screenshot-20181213-2035

次の記事

次の記事はHPの実装とアニメーションです。アニメーションは手ごわかったです。
【2Dシューティング】Unity公式チュートリアル9回目。HPの実装とアニメーション