1. はじめに
Unityでゲーム開発をしていると、思った通りに動かないバグに悩まされることがよくありますよね。「キャラクターが動かない」「スコアが正しく加算されない」「特定のオブジェクトが消えない」など、バグの原因を特定するのに時間がかかることも少なくありません。
そんなときに役立つのが コンソールログ です!Unityには、Debug.Log
というコマンドを使ってスクリプトの動作状況をコンソールに出力できる機能があります。この機能を活用すれば、コードのどこで問題が発生しているのかを素早く特定し、デバッグの効率を大幅に向上させる ことができます。
この記事では、Debug.Log
の基本的な使い方から、Debug.LogWarning
や Debug.LogError
で重要なログを見分ける方法、さらには Debug.Assert
や Debug.DrawRay
などを活用した応用テクニックまで、Unityのデバッグを効率化する方法を詳しく解説します。
初心者の方でもすぐに実践できる内容になっているので、「バグをもっと効率的に見つけたい!」という方はぜひ参考にしてください!
2. Unityのコンソールログとは?
Unityのコンソール(Console)ウィンドウは、ゲーム開発において非常に重要な役割を果たします。特にスクリプトのデバッグ時に役立ち、エラーメッセージやログを確認することで、バグの発見や動作の確認ができます。
コンソールウィンドウの基本
Unityエディタの下部にある「Console」タブをクリックすると、コンソールウィンドウを開くことができます。もし見当たらない場合は、以下の手順で開きましょう。
- メニューから開く方法
- 上部メニューの「Window(ウィンドウ)」をクリック
- 「General(一般)」→「Console(コンソール)」を選択
- ショートカットキーを使う方法
- Ctrl + Shift + C(Windows)
- Cmd + Shift + C(Mac)
このウィンドウには、エラー・警告・通常のログの3種類のメッセージが表示されます。
コンソールに表示されるメッセージの種類
Unityのコンソールログには、以下のように3つのタイプのメッセージが表示されます。
メッセージの種類 | 説明 | 例 |
---|---|---|
通常のログ(Log) | Debug.Log で出力される情報 | "プレイヤーのスコア: 100" |
警告(Warning) | Debug.LogWarning で出力。問題が発生する可能性がある | "残りHPが10未満です" |
エラー(Error) | Debug.LogError で出力。重大なエラーやバグを示す | "敵キャラのデータが読み込めません" |
これらのメッセージを適切に活用することで、スクリプトの動作確認やバグの特定をスムーズに行うことが可能になります。

次のステップでは、実際にDebug.Log
を使ってコンソールにメッセージを表示する方法を解説します!
3. Debug.Logを使ってコンソールにメッセージを表示
Unityでスクリプトを作成していると、想定通りに動かないことがよくあります。そんなときに役立つのが Debug.Log
です。Debug.Log
を使うことで、スクリプトの動作を確認しながらデバッグできます。ここでは Debug.Log
の基本的な使い方や、より便利な活用方法を解説します。
3.1 Debug.Log の基本的な使い方
Debug.Log
は、Unityのコンソールにメッセージを表示するためのメソッドです。スクリプトの任意の場所で Debug.Log
を使うと、そのメッセージが Unity の Console
ウィンドウに表示されます。
例えば、以下のスクリプトを使ってメッセージを出力できます。
using UnityEngine;
public class DebugExample : MonoBehaviour
{
void Start()
{
Debug.Log("ゲームが開始されました!");
}
}
このスクリプトを Unity のオブジェクトにアタッチしてゲームを再生すると、Console
ウィンドウに 「ゲームが開始されました!」 というメッセージが表示されます。
3.2 変数の値を確認する方法
Debug.Log
は、単なるメッセージだけでなく、変数の値を確認するのにも便利です。ゲームの挙動がおかしいと感じたときは、変数の値をコンソールに出力して確認しましょう。
例えば、プレイヤーのスコアを表示したい場合、以下のように記述します。
using UnityEngine;
public class ScoreLogger : MonoBehaviour
{
int score = 100;
void Start()
{
Debug.Log("現在のスコア: " + score);
}
}
このコードを実行すると、Console
ウィンドウに 「現在のスコア: 100」 と表示されます。変数の値が想定通りになっているか確認するときに役立ちます。
3.3 複数の情報をまとめて表示する
ゲーム開発では、複数の変数を同時にチェックしたい場面がよくあります。その場合、+
を使って文字列をつなげたり、C#の 文字列補間(String Interpolation) を活用すると便利です。
例えば、プレイヤーのスコアとライフを同時に表示する場合、以下のように書けます。
using UnityEngine;
public class PlayerStatus : MonoBehaviour
{
int score = 200;
int health = 3;
void Start()
{
// ① 文字列を + で連結する方法
Debug.Log("スコア: " + score + " ライフ: " + health);
// ② 文字列補間(String Interpolation)を使う方法(C# 6.0 以降)
Debug.Log($"スコア: {score} ライフ: {health}");
}
}
②の Debug.Log($"スコア: {score} ライフ: {health}");
のように $”” を使った記述 は、コードが読みやすくなるのでおすすめです。
3.4 Debug.Log のラベル付けで見やすくする
大量のログがコンソールに出力されると、どのログがどのスクリプトから出力されたのかわかりにくくなります。そんなときは、スクリプト名やカテゴリをメッセージに追加すると、どこから出力されたログなのか一目でわかるようになります。
using UnityEngine;
public class PlayerLogger : MonoBehaviour
{
int score = 150;
void Start()
{
Debug.Log("[Player] スコア: " + score);
}
}
コンソールに [Player] スコア: 150
と表示されるので、複数のスクリプトからログを出力していても識別しやすくなります。
3.5 Debug.Log の応用テクニック
Debug.Log
にはいくつかの便利な使い方があります。
(1) gameObject.name
を使って、オブジェクト名を表示する
複数のオブジェクトから Debug.Log
を出力すると、どのオブジェクトのログなのかわかりにくくなります。そんなときは、gameObject.name
を使って、どのオブジェクトのメッセージなのかを明示できます。
using UnityEngine;
public class ObjectLogger : MonoBehaviour
{
void Start()
{
Debug.Log(gameObject.name + " がスタートしました!");
}
}
このスクリプトを複数のオブジェクトにアタッチすると、コンソールには以下のように出力されます。
Player がスタートしました!
Enemy がスタートしました!
ItemBox がスタートしました!
オブジェクトごとにログが出るので、デバッグがしやすくなります。
(2) Time.time
を使って、処理のタイミングを記録する
処理が実行された時間を知りたい場合は、Time.time
を使って、ゲーム開始からの経過時間を記録できます。
using UnityEngine;
public class TimeLogger : MonoBehaviour
{
void Update()
{
Debug.Log("更新時刻: " + Time.time);
}
}
コンソールに出力されるメッセージの例:
更新時刻: 1.02
更新時刻: 1.98
更新時刻: 2.45
どのタイミングで処理が実行されたのかが分かりやすくなります。
まとめ
Debug.Log
を使えば、スクリプトの動作確認が簡単にできる- 変数の値を確認することで、バグの原因を特定しやすくなる
- 文字列補間
$""
を使うと、ログが見やすくなる gameObject.name
やTime.time
を活用すると、デバッグがより効率的になる

次のステップでは、より高度なデバッグ方法として Debug.LogWarning
や Debug.LogError
を活用する方法を紹介します!
4. Debug.LogWarningとDebug.LogErrorで重要なログを強調
UnityのDebug.Log
は基本的なデバッグ用のメソッドですが、プロジェクトが大きくなると、どのログが本当に重要なのか分かりにくくなることがあります。そこで役立つのが、Debug.LogWarning
とDebug.LogError
です。これらを適切に使うことで、警告や重大なエラーを一目で識別できるようになります。
🔶 Debug.LogWarningで警告を表示
「このままだと問題が起こるかもしれない」というときに使うメソッドがDebug.LogWarning
です。コンソール上では黄色のメッセージとして表示されるため、通常のDebug.Log
と区別しやすくなります。
📌 Debug.LogWarning
の使い方
void Start()
{
int playerHealth = 20;
if (playerHealth < 30)
{
Debug.LogWarning("プレイヤーのHPが低くなっています!");
}
}
🔹 実行結果(コンソールログ)
プレイヤーのHPが低くなっています!
🔹 ポイント
- プレイヤーのHPが30未満になったら警告を出す
- エラーではないが、開発者に「このままだと問題が起こるかも?」と伝える
- ゲームのバランス調整などで役立つ
🔴 Debug.LogErrorでエラーを強調
Debug.LogError
は、「これは明らかにバグなので、すぐに修正すべき!」という場合に使用します。コンソール上では赤色のメッセージとして表示され、重大な問題であることが一目で分かります。
📌 Debug.LogError
の使い方
void Start()
{
int playerHealth = -10;
if (playerHealth < 0)
{
Debug.LogError("エラー!プレイヤーのHPが0未満になっています!");
}
}
🔹 実行結果(コンソールログ)
エラー!プレイヤーのHPが0未満になっています!
🔹 ポイント
- HPが0未満になるのはあり得ない状況なので、エラーとして通知
- ゲームが異常な状態になっていることを開発者に知らせる
Debug.LogError
は、バグを早期に発見しやすくするための強力なツール
⚡ Debug.LogWarningとDebug.LogErrorの使い分け
メソッド | 用途 | 表示される色 | 例 |
---|---|---|---|
Debug.LogWarning | 警告(問題の可能性あり) | 黄色 | 「HPが低い」「スクリプトの処理が遅れている」 |
Debug.LogError | エラー(重大なバグ) | 赤色 | 「HPが0未満」「オブジェクトが見つからない」 |
例えば、ゲームのスクリプトでプレイヤーのHPを管理する場合、次のように使い分けられます。
void Update()
{
int playerHealth = GetPlayerHealth();
if (playerHealth < 30)
{
Debug.LogWarning("プレイヤーのHPが低下しています!");
}
if (playerHealth < 0)
{
Debug.LogError("エラー!HPが負の値になっています!");
}
}
このように、通常のデバッグメッセージ(Debug.Log
)、警告(Debug.LogWarning
)、エラー(Debug.LogError
)を適切に使い分けることで、Unityのコンソールログがぐっと見やすくなります!
🎯 まとめ
✅ Debug.LogWarning
は、「このままだと問題が起こるかも?」というときに使用(黄色)
✅ Debug.LogError
は、「今すぐ修正すべきバグ!」というときに使用(赤色)
✅ 適切に使い分けることで、デバッグの効率が大幅にアップ!

これでDebug.LogWarning
とDebug.LogError
の活用方法がバッチリですね!もし他にも知りたいことがあれば、気軽に聞いてください! 🎮✨
5. コンソールフィルターを活用して必要なログだけを表示
Unityで開発していると、コンソールに大量のログが流れてきて、どの情報が本当に重要なのか分からなくなることがあります。そんなときに便利なのが コンソールのフィルター機能 です。この機能を使えば、エラーメッセージや特定の種類のログだけを表示して、効率的にデバッグできます。
5.1 コンソールのフィルターとは?
UnityのConsole
ウィンドウには、次の3つのログタイプを区別するフィルターボタンがあります。
- ログ(Log):通常の情報を表示する (
Debug.Log
) - 警告(Warning):注意が必要なメッセージを表示する (
Debug.LogWarning
) - エラー(Error):深刻な問題が発生したときのメッセージを表示する (
Debug.LogError
)
コンソールの上部にある 「Log」「Warning」「Error」 のボタンをクリックすると、必要なログだけを絞り込むことができます。
5.2 フィルターを活用する方法
では、具体的にどのようにフィルターを使うのか、実際に試してみましょう。
① 通常のログ(Debug.Log)だけを表示する
- 手順:コンソールの上部にある「Log」ボタンだけをオンにする
- 効果:通常のデバッグ情報だけを確認できる
Debug.Log("プレイヤーが移動しました。");
➡ このメッセージだけをコンソールに表示
② 警告ログ(Debug.LogWarning)だけを表示する
- 手順:「Warning」ボタンだけをオンにする
- 効果:重大ではないが注意が必要なログのみを表示
Debug.LogWarning("プレイヤーのHPが少なくなっています!");
➡ HPが少なくなったときの警告メッセージを表示
③ エラーログ(Debug.LogError)だけを表示する
- 手順:「Error」ボタンだけをオンにする
- 効果:ゲームが正常に動作しない原因を素早く発見できる
Debug.LogError("敵のスクリプトが見つかりません!");
➡ スクリプトのミスやバグを見つけやすくなる
5.3 文字列検索で特定のログだけを表示
さらに、コンソールの 検索バー を使うと、特定のキーワードを含むログだけを表示できます。
例:プレイヤーに関するログだけを表示
- コンソールの検索バーに「Player」と入力
- 「Player」を含むログのみ表示
Debug.Log("Playerがジャンプしました。");
Debug.Log("PlayerのHP: 50");
Debug.LogError("Playerがダメージを受けました!");
➡ 「Player」関連のログだけをピックアップ できるので、デバッグがしやすくなります。
5.4 コンソールのフィルターを活用するメリット
- 不要なログを削除する手間が減る
- エラーや警告を素早く見つけられる
- 特定のログを検索してピンポイントでデバッグできる
- 大量のログに埋もれず、重要な情報に集中できる

Unityのコンソールフィルターを活用すれば、大量のログの中から 必要な情報だけを効率的にチェック できます。「Log」「Warning」「Error」のフィルターボタンや検索機能を上手く使い分けて、スムーズにデバッグを進めましょう!
6. Debug.Assertで特定条件を満たさない場合に警告を出す
ゲームを開発していると、「この値は絶対に0以上のはず」「このオブジェクトは必ず存在するはず」といった前提条件をチェックしたくなることがあります。もしその前提が崩れてしまったら、予期しないバグが発生する可能性がありますよね?
そんなときに便利なのが Debug.Assert
です!Debug.Assert
は、指定した条件が false の場合にエラーメッセージを表示してくれる機能です。エディタ上でデバッグするときに役立つので、バグを早期に発見できます。
◆ Debug.Assert の基本的な使い方
基本の書き方はとてもシンプルです。
Debug.Assert(条件, "エラーメッセージ");
条件が false(満たされない)場合にエラーを出す という仕組みになっています。
試しに、プレイヤーのHPが 0未満になったらエラーを出す というチェックをしてみましょう。
例:プレイヤーのHPが0未満にならないかチェック
using UnityEngine;
public class PlayerHealth : MonoBehaviour
{
public int health = 100; // 初期HP
void Update()
{
// HPがマイナスにならないかチェック
Debug.Assert(health >= 0, "エラー: プレイヤーのHPが0未満になっています!");
}
}
このコードを実行すると、もし health
が -1
などになった場合、コンソールに以下のようなエラーメッセージが出力されます。
Assertion failed: エラー: プレイヤーのHPが0未満になっています!
◆ Debug.Assert の活用例
では、他にもどんな場面で Debug.Assert
を使うと便利か見ていきましょう。
1. 必須のオブジェクトが設定されているかチェック
ゲーム開発では、特定のオブジェクトがシーンに存在していないとエラーになることがあります。例えば、プレイヤーのカメラが設定されていない場合などです。
public class CameraChecker : MonoBehaviour
{
public Camera mainCamera;
void Start()
{
Debug.Assert(mainCamera != null, "エラー: メインカメラが設定されていません!");
}
}
このスクリプトを使えば、メインカメラが アタッチされていない 場合に警告を出すことができます。
2. 配列の要素数が正しいかチェック
例えば、敵の出現ポイントが最低でも3つ必要な場面を考えてみましょう。
間違って2つ以下になっていたらエラーを出したいですよね。
public class SpawnPointsChecker : MonoBehaviour
{
public Transform[] spawnPoints;
void Start()
{
Debug.Assert(spawnPoints.Length >= 3, "エラー: スポーンポイントが3つ未満です!");
}
}
このコードでは、spawnPoints
の数が 3つ未満 だった場合にエラーが出ます。
デバッグ時にすぐ問題を発見できるので、バグの早期修正につながります。
◆ Debug.Assert の注意点
Debug.Assert
は 開発中のデバッグ専用 で使用することが推奨されます。
なぜなら、 リリースビルド(本番のゲーム)では機能しない ためです。
リリース時には Assert
のチェックが削除されるため、実際のゲームプレイには影響を与えません。
そのため、プレイヤー向けのエラーチェックには使えない ことを覚えておきましょう!
本番環境で問題を防ぎたい場合は、if
文を使って明示的にエラー処理を行うのがベストです。
◆ まとめ
Debug.Assert
は、特定の条件が false だった場合に警告を出すデバッグツール- ゲームの前提条件が正しく守られているかをチェックするのに便利
- オブジェクトの存在確認や変数の値のチェックに活用できる
- リリースビルドでは無効になるため、デバッグ専用として使用する

これを活用すれば、ゲーム開発中のバグを 早期発見&素早く修正 できるようになりますよ!
7. Debug.DrawRayやDebug.DrawLineを使って視覚的にデバッグ
Unityでゲーム開発をしていると、「オブジェクトがちゃんと動いているのか」「意図した方向に力が加わっているのか」など、視覚的に確認したい場面がたくさんあります。そんなときに便利なのが Debug.DrawRay
や Debug.DrawLine
です!
これらを使えば、エディタ上でデバッグ用の線を表示して、オブジェクトの動きや向きを確認できるので、数値だけをコンソールで確認するよりも直感的にデバッグできます。
① Debug.DrawRay でレイ(光線)を描画する
Debug.DrawRay
は、ある地点から指定した方向に向かって光線(レイ)を描くことができます。たとえば、「オブジェクトがどの方向に進んでいるか」「レイキャスト(Raycast)が正しく動作しているか」などを視覚的にチェックできます。
🔹 Debug.DrawRay
の基本的な使い方
void Update()
{
Vector3 startPos = transform.position; // 現在のオブジェクトの位置
Vector3 direction = transform.forward * 5f; // 前方向に5メートル
Debug.DrawRay(startPos, direction, Color.red);
}
💡ポイント
startPos
:光線を出す開始位置direction
:光線の方向と長さColor.red
:赤色で描画
👀 実行すると? エディタの「Sceneビュー」でオブジェクトの前方に赤い線が表示されます。これで、オブジェクトがどの方向を向いているのかを簡単に確認できます!
② Debug.DrawLine で2点間に線を描画する
Debug.DrawLine
は、指定した2つの地点を結ぶ線を描画します。例えば、オブジェクト同士の距離を確認したり、ナビゲーションの経路をデバッグするのに役立ちます。
🔹 Debug.DrawLine
の基本的な使い方
void Update()
{
Vector3 pointA = transform.position; // オブジェクトの位置
Vector3 pointB = pointA + new Vector3(3f, 0f, 0f); // 3メートル右に移動した位置
Debug.DrawLine(pointA, pointB, Color.green);
}
💡ポイント
pointA
:線の始点pointB
:線の終点Color.green
:緑色で描画
👀 実行すると? エディタの「Sceneビュー」に緑色の線が表示され、オブジェクトの位置関係を直感的に確認できます。
③ Debug.DrawRay と Debug.DrawLine の違い
機能 | Debug.DrawRay | Debug.DrawLine |
---|---|---|
開始位置 | startPos | pointA |
終了位置 | startPos + direction | pointB |
使い道 | 方向を示す | 2点間の関係を示す |
簡単に言うと、Debug.DrawRay
は「方向を示す光線」、Debug.DrawLine
は「2点間を結ぶ線」 です。
④ Debug.DrawRay の duration を指定する
デフォルトでは、これらの線は 1フレームしか表示されません。そのため、duration
を指定すると、一定時間表示させることができます。
🔹 5秒間表示させる例
void Update()
{
Debug.DrawRay(transform.position, transform.forward * 5f, Color.blue, 5f);
}
このコードでは、青いレイが 5秒間表示 されるので、デバッグがしやすくなります!
⑤ Debug.DrawRay を使った具体的なデバッグ例
例えば、「レイキャストが意図した方向に飛んでいるか」を確認したい場合、Debug.DrawRay
を使えば、どこに向かって飛んでいるのかを視覚的にチェックできます。
void Update()
{
RaycastHit hit;
Vector3 rayStart = transform.position;
Vector3 rayDirection = transform.forward;
Debug.DrawRay(rayStart, rayDirection * 10f, Color.yellow);
if (Physics.Raycast(rayStart, rayDirection, out hit, 10f))
{
Debug.Log("Hit Object: " + hit.collider.gameObject.name);
}
}
このコードでは、
Debug.DrawRay
で 黄色の線を表示(10mの長さ)Physics.Raycast
を使って、オブジェクトに当たったかチェック- 当たったら
Debug.Log
でオブジェクト名を表示
こうすることで、「レイがどこに向かっているのか」と「本当にオブジェクトに当たっているのか」を 一目で確認 できます。
まとめ
✅ Debug.DrawRay
→ 方向を示す光線を描く
✅ Debug.DrawLine
→ 2点間の線を描く
✅ duration
を指定すれば 一定時間表示 可能
✅ レイキャストのデバッグ には Debug.DrawRay
が便利

コンソールログだけでは分かりにくいバグも、視覚的に確認することでデバッグがしやすくなります! Unityのデバッグをより効率化するために、ぜひ活用してみてください!
8. 効率的なデバッグのためのベストプラクティス
Unityのデバッグをスムーズに行うためには、単にDebug.Log
を使うだけではなく、適切な書き方や管理の仕方を工夫することが大切です。ここでは、効率的なデバッグのためのベストプラクティスを紹介します。
1. 不要なログを多用しすぎない
Debug.Log
は開発中にとても便利ですが、大量に使いすぎるとログが溢れかえってしまい、本当に必要な情報を見つけるのが難しくなります。特に、毎フレーム出力するようなログはパフォーマンスの低下につながることもあるので注意が必要です。
❌ 悪い例(毎フレーム大量のログを出す)
void Update()
{
Debug.Log("プレイヤーの座標: " + transform.position);
}
✅ 良い例(特定の条件でログを出す)
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("ジャンプした!");
}
}
ポイント:
- 毎フレーム実行される
Update
内でDebug.Log
を多用しない - 必要なイベントが発生したときだけログを出す
2. スクリプトごとに識別しやすいログを作る
ログが増えてくると、どのスクリプトから出力されたのか分かりにくくなります。[スクリプト名]
のようなタグをつけると、識別が簡単になります。
✅ 例(スクリプト名を表示する)
void Start()
{
Debug.Log("[PlayerController] ゲーム開始");
}
✅ 例(オブジェクト名も一緒に表示)
void Start()
{
Debug.Log($"[{gameObject.name}] スタート");
}
ポイント:
[]
で括ると見やすくなる$""
(C#の文字列補間) を使うとスッキリ書ける- オブジェクト名を入れると、どのオブジェクトのログか分かりやすい
3. #if UNITY_EDITOR を使って本番環境でログを出さない
Debug.Log
はUnityエディタ内では便利ですが、本番環境(ビルド後)で不要なログを出すとパフォーマンスが低下する可能性があります。#if UNITY_EDITOR
を使うと、エディタで実行しているときだけログを出すことができます。
✅ 例(エディタ実行時のみログを出す)
void Start()
{
#if UNITY_EDITOR
Debug.Log("エディタでのデバッグ用ログ");
#endif
}
ポイント:
#if UNITY_EDITOR ... #endif
の間に書いたコードは、エディタ実行時のみ有効- ビルド後の実行ファイルではこのログが表示されないので、パフォーマンスを維持できる
4. Debug.LogWarning や Debug.LogError を適切に使い分ける
すべてのログをDebug.Log
で出すと、重要なエラーメッセージが埋もれてしまいます。エラーの深刻度に応じて、適切なログ関数を使い分けましょう。
✅ 例(通常のログ)
Debug.Log("ゲームがスタートしました");
✅ 例(警告ログ – 黄色表示)
Debug.LogWarning("HPが少なくなっています!");
✅ 例(エラーログ – 赤色表示)
Debug.LogError("プレイヤーのHPが0になりました!");
ポイント:
Debug.LogWarning
は警告として使う(例:HPが少なくなった)Debug.LogError
はゲームが停止するような重大な問題で使う(例:スクリプトが見つからない)
5. Debug.Assert で条件を満たさないときにエラーメッセージを表示
Debug.Assert
を使うと、特定の条件が満たされなかったときにエラーメッセージを出すことができます。バグの発見に役立つので、重要なチェックポイントで活用しましょう。
✅ 例(HPが0未満にならないようにチェック)
void TakeDamage(int damage)
{
playerHealth -= damage;
Debug.Assert(playerHealth >= 0, "HPが負の値になっています!");
}
ポイント:
Debug.Assert(条件, "エラーメッセージ");
の形式で使う- 条件が
false
になるとエラーメッセージが出る - 条件を満たしていれば何も表示されない
6. Debug.DrawRay でオブジェクトの動きを視覚的に確認
コンソールログだけでなく、Debug.DrawRay
を使うとゲームシーン内でデバッグ情報を視覚的に確認できます。例えば、オブジェクトの向いている方向や、レイキャストの判定を可視化できます。
✅ 例(オブジェクトの向きを赤線で表示)
void Update()
{
Debug.DrawRay(transform.position, transform.forward * 5, Color.red);
}
ポイント:
Debug.DrawRay
は エディタのSceneビュー でのみ表示される- レイキャストの判定など、視覚的に確認したい場合に便利
まとめ
効率的にデバッグを行うためには、単にDebug.Log
を使うだけでなく、適切な方法で整理しながらログを出力することが重要です。
✅ ベストプラクティスまとめ
- 不要なログを多用しすぎない(特定の条件でのみ表示)
- スクリプト名やオブジェクト名を含めて分かりやすくする
#if UNITY_EDITOR
を使って本番環境ではログを表示しないDebug.LogWarning
やDebug.LogError
でエラーの重要度を区別Debug.Assert
を使って重要な条件チェックをするDebug.DrawRay
で視覚的にデバッグする
これらを活用すれば、バグの特定がスムーズになり、開発の効率が大幅に向上します!
9. まとめ
Unityのコンソールログを活用することで、バグの特定と修正がよりスムーズになります。特にDebug.Log
を使いこなせば、コードのどこで問題が発生しているのかをすばやく見つけることができます。以下に、この記事で学んだポイントをまとめます。
Debug.Log
で基本的なデバッグを行う- 変数の値や処理の流れを確認するのに役立つ
$""
やstring.Format
を活用してわかりやすいログを出力する
Debug.LogWarning
とDebug.LogError
を適切に使い分けるDebug.LogWarning
は警告を出すのに使い、見落としを防ぐDebug.LogError
はエラーを強調し、深刻な問題を素早く発見できる
- コンソールのフィルタ機能を活用する
Log Type
(通常ログ、警告、エラー)を選択して、不要な情報を省く- 大量のログの中から、必要なメッセージを素早く見つける
Debug.Assert
で特定条件を満たさないときに警告を出す- 「絶対にこの条件が成立しているはず」というチェックを入れる
- 例:プレイヤーのHPがマイナスにならないようにする
Debug.DrawRay
やDebug.DrawLine
で視覚的にデバッグする- 3Dゲームではオブジェクトの動きや向きを可視化するのに便利
- カメラや敵の視線、レイキャストの軌道などをデバッグしやすくなる
- デバッグを効率化するための工夫をする
#if UNITY_EDITOR
を活用し、ビルド時に不要なログを削減する- ログの出力を整理し、スクリプトごとに識別できるようなメッセージを作る
- 必要なログだけを出力するようにし、コンソールを見やすくする

コンソールログを正しく活用すれば、バグの発見スピードが格段に向上し、開発の効率もアップします。特に、適切なログの使い分けとフィルタリングを駆使することで、必要な情報だけを効率よく取得できるようになります。ぜひ、今回紹介したテクニックを活用して、快適なUnity開発を実現してください!
よくある質問(FAQ)
- QUnityのコンソールログが表示されないのはなぜ?
- A
Console
ウィンドウが閉じている可能性があります。「Window」→「General」→「Console」から開きましょう。また、Debug.Log
の記述ミスがないかも確認してください。
- Q
Debug.Log
を大量に使うとパフォーマンスに影響はある? - A
はい、特に実機で動作させるとパフォーマンス低下の原因になります。
#if UNITY_EDITOR
を使って、エディタ実行時のみログを出すようにするのがオススメです。
- Q
Debug.LogError
を使うとゲームがクラッシュする? - A
Debug.LogError
自体はクラッシュの原因にはなりませんが、エラー内容によってはゲームが停止することがあります。エラーメッセージをよく確認しましょう。