Unityゲームのデバッグ・テスト実践ガイド|観点別チェックリストと不具合の見つけ方

Digital checklist titled Unity debugging checklist with Japanese tasks and a developer debugging a 3D Unity scene with virtual bugs 初心者向けゲーム開発入門
A developer uses a detailed checklist and interactive 3D scene to debug a Unity project.

はじめに:「なんとなくテスト」から「観点を持ったテスト」へ

当サイトの既存記事「個人ゲーム開発のデバッグ・テストプレイの進め方【STEP5】」では、デバッグとテストの違い・他人にテストプレイしてもらう重要性・フィードバックの集め方について解説しました。

この記事ではさらに一歩踏み込んで、Unityに特化した具体的なデバッグ手法と、ジャンル別のテスト観点チェックリストを解説します。

「一通りプレイして問題なかった」だけでは見落とすバグが必ずあります。観点を持ってテストすることで、公開後の不具合報告を大幅に減らすことができます。


Unity Consoleの読み方:3種類のメッセージを理解する

Unityのデバッグで最初に覚えるべきツールがConsoleウィンドウです。Window → General → Consoleで開けます。

Consoleには3種類のメッセージが表示されます。

アイコン種類意味対応の優先度
🔴 赤Errorスクリプトのエラー。ゲームが止まる原因になる最優先で対応
🟡 黄Warning問題になる可能性がある警告。今は動いているが将来バグになりうるなるべく対応
⚪ 白LogDebug.Logで出力した情報。開発者が自分で仕込むもの確認用

Consoleを効率よく使うコツ

① エラーをダブルクリックするとコードの該当行に飛べる

エラーメッセージをダブルクリックすると、Visual StudioやRiderで問題のあるコードの行が開きます。エラーが出たらまずダブルクリックして場所を特定しましょう。

② 「Clear on Play」を活用する

ConsoleツールバーのClear on Playをオンにすると、再生するたびに前のログが消えて見やすくなります。

③ エラーメッセージは全文コピーして検索する

NullReferenceException: Object reference not set to an instance of an object
PlayerController.Update () (at Assets/Scripts/PlayerController.cs:25)

このようなエラーが出たら、最初の1行をそのままGoogle検索すると解決策が見つかることがほとんどです。


Debug.Logを使ったデバッグの基本

Debug.Logは、コード内の任意の場所に「今ここを通っている」「この値はいくつか」を表示できるUnityのデバッグ機能です。

基本的な使い方

// 文字列を表示する
Debug.Log("ここを通過した");

// 変数の値を表示する
Debug.Log("スコア: " + score);
Debug.Log($"プレイヤー座標: {transform.position}");

// 警告として表示する(黄色)
Debug.LogWarning("HPが0になった");

// エラーとして表示する(赤)
Debug.LogError("致命的なエラーが発生した");

よくある使い方パターン

① 当たり判定が機能しているか確認する

void OnTriggerEnter2D(Collider2D other)
{
    Debug.Log("衝突した相手: " + other.gameObject.name);
}

「当たり判定が効いていない」と思ったとき、このログが出るかどうかでColliderの設定ミスかスクリプトの問題かを切り分けられます。

② 条件分岐が正しく動いているか確認する

if (score >= 100)
{
    Debug.Log("スコア100以上:クリア処理に入る");
    GameClear();
}
else
{
    Debug.Log($"スコア不足: 現在{score}点");
}

③ デバッグが終わったらコメントアウトする

// Debug.Log("スコア: " + score); // ← 公開前はコメントアウトまたは削除

Debug.Logを大量に残したまま公開すると、ゲームのパフォーマンスに影響する場合があります。公開前には不要なDebug.Logを整理しましょう。


ジャンル別テスト観点チェックリスト

ゲームが「とりあえず動く」状態になったら、ジャンルに応じた観点でテストを行います。以下のチェックリストを使って、漏れなく確認しましょう。

パズルゲームのチェックリスト

基本動作

□ すべての操作(クリック・スワイプ・キー)が正しく機能するか
□ ルール判定が正確に動作するか(消去・移動・クリア判定など)
□ 想定外の操作(連打・同時クリック)でバグが起きないか
□ ステージの初期状態が毎回正しくリセットされるか

ゲームフロー

□ クリア条件を満たしたときに正しくクリア画面に遷移するか
□ 残り手数・タイムリミットがある場合、ゲームオーバー処理が正しく動くか
□ リトライ時に状態が完全にリセットされるか(スコア・ステージ状態など)
□ 複数ステージある場合、最終ステージをクリアしたときの処理は正しいか

UI・表示

□ スコア・残り手数・タイムが正しい数値で表示されているか
□ ステージ番号の表示は正しいか
□ フォントが正しく表示されているか(日本語の文字化けがないか)

横スクロールアクションのチェックリスト

プレイヤー操作

□ 左右移動・ジャンプが正しく動作するか
□ 壁に挟まってスタックしないか
□ ジャンプを連打しても二段ジャンプ以上にならないか(意図しない場合)
□ 画面端で操作がおかしくならないか
□ 落下速度が自然か(重すぎ・軽すぎでないか)

当たり判定

□ 地面・壁・天井のすべての当たり判定が正しく機能するか
□ 敵との当たり判定でダメージが正しく発生するか
□ 当たり判定のサイズがスプライトと極端にずれていないか
□ 高速移動時にオブジェクトをすり抜けないか

ゲームフロー

□ ゲームオーバー(HP0・穴落下)が正しく機能するか
□ ゴール到達時にクリア処理が正しく動くか
□ リスタート時にHP・スコア・位置がリセットされるか
□ カメラがプレイヤーを正しく追従するか(端でのクランプも含む)

ノベルゲームのチェックリスト

テキスト・シナリオ

□ すべてのセリフが正しい順番で表示されるか
□ テキストの誤字・脱字がないか
□ 文字送りのスピードは適切か(速すぎ・遅すぎでないか)
□ テキストがUIの枠をはみ出していないか
□ 日本語フォントが正しく表示されているか

選択肢・分岐

□ すべての選択肢が正しいシナリオに分岐するか
□ 分岐後のシナリオが最後まで正しく進むか
□ バッドエンド・グッドエンドのすべてのルートを通ったか
□ 選択肢のボタンが正しく反応するか(連打時も含む)

演出

□ 背景・立ち絵の切り替えが正しいタイミングで行われるか
□ BGMのループ・切り替えが自然か(途切れ・ブツ切れがないか)
□ フェードイン・フェードアウトが正しく動作するか
□ セーブ・ロード機能がある場合、正しく保存・復元できるか

シューティングゲームのチェックリスト

自機・弾

□ 自機の移動が画面端でクランプされているか(画面外に出ないか)
□ 弾が正しい方向・速度で飛ぶか
□ 弾の発射間隔に制限があるか(連打で無限に出ないか)
□ 弾が画面外に出たときに正しくDestroyされているか(メモリリーク防止)

敵・当たり判定

□ 敵が正しいタイミング・位置に出現するか
□ 弾と敵の当たり判定が正しく機能するか
□ 敵が画面外に出たときに正しくDestroyされているか
□ 自機と敵の当たり判定でゲームオーバーが正しく発生するか

ゲームフロー

□ スコアが正しくカウントされているか
□ 残機・HPの表示と実際の値が一致しているか
□ ゲームオーバー後のリスタートで状態が完全にリセットされるか
□ 難易度が時間経過とともに正しく上昇するか(そういう設計の場合)

バグの再現手順の記録方法

バグを見つけたとき、「なんかおかしい」で終わらせず、再現手順を記録する習慣をつけましょう。再現手順が書けると、修正後に「直ったか確認する」作業も効率化できます。

バグ記録テンプレート

■ バグ報告

【バグID】: Bug-001
【発見日】: 
【深刻度】: 高 / 中 / 低
    高:ゲームが進行不能になる
    中:不具合はあるが続行できる
    低:見た目や軽微な挙動の問題

【タイトル】: (バグの内容を一言で)

【再現手順】:
1. 
2. 
3. 

【期待される動作】: (本来こうなるべき)
【実際の動作】: (実際にはこうなっている)

【再現率】: 毎回 / たまに / 1回だけ
【Consoleのエラー】: (あれば貼り付け)
【スクリーンショット】: (あれば添付)

【修正状況】: 未対応 / 対応中 / 修正済み / 保留

記録ツールのおすすめ

  • Notionのデータベース:ステータス管理・フィルタリングが便利
  • Googleスプレッドシート:シンプルで共有しやすい
  • 付箋アプリ:軽微なバグのメモに最適

まとめ

今回お伝えしたポイントをおさらいします。

  • ConsoleのError(赤)は最優先で対応。ダブルクリックで該当行に飛べる
  • Debug.Logで「今どこを通っているか・値はいくつか」を可視化する
  • 公開前にはDebug.Logを整理してパフォーマンスへの影響を防ぐ
  • ジャンル別チェックリストを使って観点を持ったテストを行う
  • バグはテンプレートに記録して再現手順を残す習慣をつける

テストが完了したら、いよいよ公開です。次回は「UnityゲームをWebGLでビルドしてunityroom・itch.ioに公開する手順」を解説します!


関連商品(PR)

テスト・デバッグ環境を整えるのに役立つデバイスをご紹介します。

サブモニター(デュアルディスプレイ用)

LGエレクトロニクス 27インチ モニター(Amazon)

Consoleとゲーム画面を別モニターに表示することでデバッグ効率が大幅に上がります。

Unity 6対応・入門の定番書

Unityの教科書 Unity 6完全対応版(Amazon)

デバッグの基礎からスクリプトの書き方まで日本語でていねいに解説されています。


参考にしたサイト

コメント

タイトルとURLをコピーしました