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)のテキストを紐付ける
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 で説明します
※インスペクターに各パネルを紐付け
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→各障害物)
※インスペクターに各ゲームオブジェクトを紐付け
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);
}
}