LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

フロッガー風ゲームの作り方 ~ゲームマネージャー~

Posted at

Game Manager

1.空のオブジェクトを作って、下のサンプルを付ける
2.UI関連で作ったサンプルコード(UI Manager 及び Game Object Manager)もここに付ける
3.インスペクターに各ゲームオブジェクトを紐付け

GameManager.cs
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    [SerializeField] GameObjectManager gameobjectManager;   // GameObject 関連
    [SerializeField] PlayerTrigger playerTrigger;
    [SerializeField] UIManager uiManager;                   // UI関連
    [SerializeField] GameObject startPanel;
    [SerializeField] GameObject gameClearPanel;
    [SerializeField] GameObject gameOverPanel;

    private void Start()
    {
        gameobjectManager.GameStartFinish();
    }

    private void Update()
    {
        InputSpace();
    }

    // Start時、Finish時 スペースボタンが押された時の処理
    private void InputSpace()
    {
        if (startPanel.activeSelf && Input.GetKeyDown(KeyCode.Space))
        {
            GameStart();
        }
        if (gameClearPanel.activeSelf && Input.GetKeyDown(KeyCode.Space))
        {
            GameScene();
        }
        if (gameOverPanel.activeSelf && Input.GetKeyDown(KeyCode.Space))
        {
            GameScene();
        }
    }

    // StartPanel をクリックするとゲームスタート
    public void GameStart()
    {
        gameobjectManager.StartOn();
        uiManager.StartPanelOn();
    }

    // Player が全部巣に帰るとクリア
    public void GameClear()
    {
        if (playerTrigger.nestSheet <= 0)
        {
            gameobjectManager.GameStartFinish();
            uiManager.GameClearPanelOn();
        }
    }

    // Player の残機が「0」になるとゲームオーバー
    public void GameOver()
    {
        if (playerTrigger.playerRest <= 0)
        {
            gameobjectManager.GameStartFinish();
            uiManager.GameOverPanelOn();
        }
    }

    // Scene を最初に戻す
    public void GameScene()
    {
        SceneManager.LoadScene("MainScene");
    }
}

サンプルコードの説明

    // Start時、Finish時 スペースボタンが押された時の処理
    private void InputSpace()
    {
        if (startPanel.activeSelf && Input.GetKeyDown(KeyCode.Space))
        {
            GameStart();
        }
        if (gameClearPanel.activeSelf && Input.GetKeyDown(KeyCode.Space))
        {
            GameScene();
        }
        if (gameOverPanel.activeSelf && Input.GetKeyDown(KeyCode.Space))
        {
            GameScene();
        }
    }

スペースキーが押された時の処理です

    // StartPanel をクリックするとゲームスタート
    public void GameStart()
    {
        gameobjectManager.StartOn();
        uiManager.StartPanelOn();
    }

スタートパネルが押された時の処理です。
スタートパネルの Event Trigger に設定してください

    // Player が全部巣に帰るとクリア
    public void GameClear()
    {
        if (playerTrigger.nestSheet <= 0)
        {
            gameobjectManager.GameStartFinish();
            uiManager.GameClearPanelOn();
        }
    }

プレイヤーが巣に全部帰った時の処理です

    // Player の残機が「0」になるとゲームオーバー
    public void GameOver()
    {
        if (playerTrigger.playerRest <= 0)
        {
            gameobjectManager.GameStartFinish();
            uiManager.GameOverPanelOn();
        }
    }

プレイヤーの残機が0になった時の処理です

    // Scene を最初に戻す
    public void GameScene()
    {
        SceneManager.LoadScene("MainScene");
    }

ゲームクリアーパネル及びゲームオーバーパネルを押した時の処理です
ゲームクリアーパネル及びゲームオーバーパネルの Event Trigger に設定してください

最後に

ざっくり書いただけなので、わかりにくいと思います
わからなければ、ご連絡ください
最初のページ(フロッガー風ゲームの作り方)に書き込みお願いします

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up