7.スクリプトの記述③
スクリプトの記述③
次に「GameFlow」のScriptに以下のコードをコピーして、今のコードの上から上書きしてください。
using UnityEngine;
using TMPro;
public class GameFlow : MonoBehaviour
{
public GameObject startPanel;
public GameObject gamePanel;
public GameObject resultPanel;
public TextMeshProUGUI scoreText;
public TextMeshProUGUI timerText; // タイマー用テキスト
private int score = 0;
private float timeRemaining = 10.0f; // 制限時間
private bool isPlaying = false; // ゲーム中かどうか
void Start()
{
// ゲーム起動時はスタート画面から
ShowStart();
}
void Update()
{
// ゲーム中ならタイマーを減らす
if (isPlaying)
{
timeRemaining -= Time.deltaTime;
timerText.text = "Time: " + Mathf.Ceil(timeRemaining).ToString();
if (timeRemaining <= 0)
{
ShowResult();
}
}
}
public void ShowStart()
{
isPlaying = false;
startPanel.SetActive(true);
gamePanel.SetActive(false);
resultPanel.SetActive(false);
}
public void ShowGame()
{
score = 0;
timeRemaining = 10.0f; // 10秒にリセット
isPlaying = true; // ゲームスタート!
startPanel.SetActive(false);
gamePanel.SetActive(true);
resultPanel.SetActive(false);
UpdateScoreText();
}
public void AddScore()
{
if (isPlaying) // ゲーム中だけスコア加算
{
score++;
UpdateScoreText();
}
}
void UpdateScoreText()
{
scoreText.text = "Score: " + score;
}
public void ShowResult()
{
isPlaying = false;
startPanel.SetActive(false);
gamePanel.SetActive(false);
resultPanel.SetActive(true);
}
}
GameManagerを選択し、Inspectorを見ると「Timer Text」という空の枠が追加されています。
Hierarchy の GamePanel にある 「TimerText」(もし作っていなければ新しく作成してください)を、その枠にドラッグ&ドロップしてください。

これで、ゲーム開始時に「Time: 10」と表示され、自動的にカウントダウンが始まります!
ざっくりコード解説3
private bool isPlaying = false; // ゲーム中かどうか
役割: ゲームが「プレイ中」なのか「メニュー画面(スタート・リザルト)中」なのかを記録するスイッチです。
メリット: このスイッチが true の時だけタイマーを動かしたり、スコアを加算したりすることで、スタート画面で勝手に時間が減るなどのバグを防ぎます。
void Update()
{
if (isPlaying) // ゲーム中なら
{
timeRemaining -= Time.deltaTime; // 毎フレーム時間を減らす
timerText.text = "Time: " + Mathf.Ceil(timeRemaining).ToString(); // 画面に表示
if (timeRemaining <= 0) // 時間切れになったら
{
ShowResult(); // リザルト画面へ
}
}
}
Time.deltaTime: 「前回のフレームからの経過時間」を指します。これを使うことで、PCの処理速度に関わらず、どんな環境でも正確に「1秒=1秒」としてカウントできます。
Mathf.Ceil: 小数点以下を切り上げる関数です。これにより、残り時間が「9.8秒、9.7秒…」と表示さ

コメント