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.

フロッガー風ゲームの作り方 ~UI関連~

Last updated at Posted at 2023-11-30

Canvas の設定

1.Canvasコンポーネント Render Mode を Screen Space - Camera にして、カメラを設定してください
2.Canvas Scaler コンポーネント UI Scale Mode を Scale With Screen Size にして、X:960 Y:540 に設定してください

スタートパネルなど

Start Panel 及び Game Clear Panel 及び Game Over Panel の作り方は、
基本的に同じ作り方です。
1.Hierarchy → UI → Panel で パネルを作成
2.Rect Transform Scale X:0.8 Y:0.8 Z:0.8
3.Event Trigger を付けて、Add New Event Type の Pointer Click を付ける
※これでパネルをクリックするとイベントが発生します
 各イベント(スタート画面に戻るなど)は、ゲームマネージャーで説明します
4.各パネルに、Text で文字を入れて、色を変更
Start Panel rgba(50,100,200,200)
Game Clear Panel rgba(50,200,50,200)
Game Over Panel rgba(200,50,50,200)

プレイヤー残機

空のオブジェクトを作ってひとまとめにします
空のオブジェクト Transform Position X:7 Y:0 Z:0 に変更

プレイヤー残機の→rgba(0,255,0,255)

1.Hierarchy → 2D Object → Sprites → Square で、オブジェクトを作成
2.Transform Position X:-1 Y:0 Z:0 Scale X:0.5 Y:0.5 Z:0.5 に変更
3.Sprite Renderer Color rgba(0,255,0,255)

プレイヤー残機

1.Hierarchy → 3D Object → Text TextMeshPro で残機を表示
2.TextMeshPro - Text Font Size を 10 に変更
※サイズや色とか適当で大丈夫です
3.下のサンプルコード(PlayerRect)を付ける
4.インスペクターに PlayerTrigger と 残機(rect)のテキストを紐付ける

PlayerRect.cs
using UnityEngine;
using TMPro;

public class PlayerRect : MonoBehaviour
{
    [SerializeField] PlayerTrigger player;
    [SerializeField] TextMeshPro rect;

    void Update()
    {
        Rect();
    }

    // Player の残機を表示
    private void Rect()
    {
        rect.SetText("{0}", player.playerRest);
    }
}

UI Manager

各パネルがクリックされた時のパネルの処理です
処理は Game Manager で行いますので、Game Manager で説明します
※インスペクターに各パネルを紐付け

UIManager.cs
using UnityEngine;

public class UIManager : MonoBehaviour
{
    [SerializeField] GameObject startPanel;     // Start Panel
    [SerializeField] GameObject gameClearPanel; // GameClear Panel
    [SerializeField] GameObject gameOverPanel;  // GameOver Panel

    // スタート時
    private void Start()
    {
        startPanel.SetActive(true);
        gameClearPanel.SetActive(false);
        gameOverPanel.SetActive(false);
    }

    // スタートパネルが押された時
    public void StartPanelOn()
    {
        startPanel.SetActive(false);
    }

    // ゲームクリアした時
    public void GameClearPanelOn()
    {
        gameClearPanel.SetActive(true);
    }

    // ゲームが終了した時
    public void GameOverPanelOn()
    {
        gameOverPanel.SetActive(true);
    }

Game Object Manager

各ゲームオブジェクトのスタート時やスタートパネルが押された時の処理です
処理は Game Manager で行いますので、Game Manager で説明します
あと各ゲームオブジェクトを空のオブジェクトで、まとめてください
(Player→プレイヤー、playerRect→残機、CrossController→十字キー、Obstacle→各障害物)
※インスペクターに各ゲームオブジェクトを紐付け

GameObjectManager.cs
using UnityEngine;

public class GameObjectManager : MonoBehaviour
{
    [SerializeField] GameObject player;
    [SerializeField] GameObject playerRect;
    [SerializeField] GameObject obstacle;
    [SerializeField] GameObject CrossController;

    // ゲームスタート及びゲーム終了時
    public void GameStartFinish()
    {
        player.SetActive(false);
        playerRect.SetActive(false);
        obstacle.SetActive(false);
        CrossController.SetActive(false);
    }

    // StartPanel が押された時
    public void StartOn()
    {
        player.SetActive(true);
        playerRect.SetActive(true);
        obstacle.SetActive(true);
        CrossController.SetActive(true);
    }
}

次の項目

ゲームマネージャー

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