記事の目的
前回、敵を実装していってGIFを作るために録画しようとしたところ
準備中に敵が動き出してうまく録画することができませんでした。
前回記事⇒ #5_敵の実装
ChatGPTの回答(クリックで展開)
これにはいくつか効果的な対処法があります。以下にまとめました:
✅ 解決策①:「ゲーム開始を一時停止する」仕組みを入れる(おすすめ)
🧩 方法:ゲーム開始時に「タイトル画面 or Press Any Key」状態にしておく
タイトル画面から遷移する機能を作るべきとのこと。
まだ後でやるつもりでしたが先に作ってしまいます。
タイトルシーンの作成
ChatGPTの回答(クリックで展開)
「Build & Run」起動後すぐにプレイが始まらないようにするため、「Press Any Keyで開始」するタイトル画面の作り方を、Unityでの実装手順とコード例を含めて詳しく説明します。
🎮 ゴール
ゲーム起動 → 「PRESS ANY KEY」と表示 →
キーが押されたらプレイシーン(GameScene)へ移動 → プレイ開始
✅ ステップバイステップ解説
🧩 Step 1:タイトル用のシーンを作成
Unityで新しいシーンを作成(名前:TitleScene など)
UI → Text または TextMeshPro を使って
PRESS ANY KEY の文字を中央に表示
(点滅させたい場合は後述)
🧩 Step 2:タイトル用スクリプトを作成
Scripts/TitleSceneManager.cs を作成:
using UnityEngine;
using UnityEngine.SceneManagement;
public class TitleSceneManager : MonoBehaviour
{
void Update()
{
// 何かキーが押されたらゲーム開始
if (Input.anyKeyDown)
{
SceneManager.LoadScene("GameScene"); // 実際のプレイ用シーン名に変更
}
}
}
🟢 このスクリプトを空の GameObject にアタッチしてください(例:TitleManagerなど)
🧩 Step 3:Build Settingsに追加するシーンを確認
Unity上部メニュー「File > Build Settings」
「Scenes In Build」に
・TitleScene(タイトル用)
・GameScene(プレイ本編)
がこの順で含まれていることを確認
⚠️ 最上位(インデックス0)が「TitleScene」になるように順番を調整してください
🧩 Step 4:プレイシーン(GameScene)を作る or 接続
SceneManager.LoadScene("GameScene") の "GameScene" には、実際のプレイ用シーン名を正確に指定してください
Unityの「Project」ビューで対象の .unity ファイル名と一致しているか確認
✨ 任意追加機能
🔁 PRESS ANY KEY を点滅させたいとき(簡易例)
using UnityEngine;
using TMPro;
public class BlinkText : MonoBehaviour
{
public TextMeshProUGUI pressAnyKeyText;
public float blinkInterval = 0.5f;
void Start()
{
InvokeRepeating("ToggleText", 0, blinkInterval);
}
void ToggleText()
{
pressAnyKeyText.enabled = !pressAnyKeyText.enabled;
}
}
pressAnyKeyText に TextMeshProのオブジェクトをアタッチ
一定間隔で表示・非表示を切り替えます
Step:1 タイトル用のシーンを作成
projectビューから新しいシーンを作成。また、SampleSceneとなっていた作成中のシーンをGameSceneに名称変更を行いました。
TextMeshProがよく分からないので教えてもらいましょう。
PRESS ANY KEY の文字を中央に表示
(点滅させたい場合は後述)
この部分を詳しく解説お願いします。
ChatGPTの回答(クリックで展開)
ここでは Unity の UI を使って「PRESS ANY KEY」という文字を画面中央に表示する方法を、Text / TextMeshPro 両方で丁寧に説明します。
✅ 前提:UIを画面に表示するには「Canvas」が必要
Unityでは、UI(Text、Buttonなど)を表示するにはまず Canvas が必要です。
Canvas の下に UI 要素を配置することで、画面に文字や画像が表示されます。
🧩 方法①:Text(標準UIテキスト)で表示する方法
🔧 Step-by-step
Unity の Hierarchy で右クリック →
UI > Text を選ぶ
🔸 自動で「Canvas」「EventSystem」も生成されます
生成された Text オブジェクトを選択
・Text を PRESS ANY KEY に書き換え
・Font Size を大きく(例:48以上)
・Alignment を中央(Horizontal: Center、Vertical: Middle)
RectTransform を調整:
・Anchor Preset を「中央・中央」(Alt + Shift 押しながら中央アイコンをクリック)
・PosX, PosY を 0
・Width / Height は適宜大きめに
✅ これで画面中央に PRESS ANY KEY が大きく表示されます
🧩 方法②:TextMeshPro - Text(推奨:より高機能)
🔧 Step-by-step
TextMeshPro がまだ使えない場合は、初回だけ「TMPの初期化ダイアログ」が出ます → 「Import TMP Essentials」をクリック
Hierarchy で右クリック →
UI > Text - TextMeshPro を選ぶ
・表示された Text (TMP) を選択
・Text フィールドに PRESS ANY KEY と入力
・Font Size を大きく(例:60以上)
・Alignment → 中央・中央(2×2の中央マーク)
RectTransform 調整:
・Anchor:中央
・Pos X/Y = 0、Width/Height を広めに(500~800くらい)
✅ よりきれいなフォントで表示でき、後でアニメーションやエフェクトを追加する際にも便利です
🎨 見た目の調整ポイント
項目 | 設定値例(Text / TextMeshPro) |
---|---|
フォントサイズ | 48~72くらい |
フォントカラー | 白(背景に応じて調整) |
アンカー | 中央(中央中央) |
位置 | X:0, Y:0 |
アライメント | 水平・垂直ともに中央 |
✨ 補足:点滅アニメーションを入れたい場合
TextMeshProなら BlinkText.cs(前の返信のスクリプト)を使って、Text を数秒ごとに enabled 切り替えで点滅できます。
using UnityEngine;
using TMPro;
public class BlinkText : MonoBehaviour
{
public TextMeshProUGUI pressAnyKeyText;
public float blinkInterval = 0.5f;
void Start()
{
InvokeRepeating("ToggleText", 0f, blinkInterval);
}
void ToggleText()
{
pressAnyKeyText.enabled = !pressAnyKeyText.enabled;
}
}
上記スクリプトを空のGameObjectにアタッチ
pressAnyKeyText に TextMeshPro をドラッグして設定
方法②で設定を行いました。
画面にデカデカと文字が出ています。一応点滅するようにしました。
Step2:タイトル用スクリプトを作成
TitleSceneに移動してオブジェクトを作成。スクリプトをアタッチします。
ここでの内容自体は"なにかボタンを押したらGameSceneに遷移する"というもの。
あとでオプション設定などを付けたくなったらここを"特定のボタンを選択したら"などに書き換える必要がありそうです。
Step3:Build Setteingsに追加するシーンを確認
Add Open Scenesで現在のシーンを追加できる模様。
追加したシーンは下に来るので上にドラッグアンドドロップで移動しました。
Step 4:プレイシーン(GameScene)を作る or 接続
事前にGameSceneという名称に変更していたので特にやることは無さそうです。
ボタンを押すことでゲームに遷移し、実際に操作できるようになりました!
今回はこれで終わります。またタイトル画面はオプションなどと共に作っていきたいと思います。
次回は敵の動きを再び作っていこうと思います。
◇ 関連記事