Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
Debug.Log() / Debug.LogError()
Unity でゲームオブジェクトの状態や変数の値をコンソールに出力する『Debug.Log()』、警告を表示する『Debug.LogWarning()』、エラーを表示する『Debug.LogError()』の使い方です。
構文
using UnityEngine; // 通常のメッセージを白色で出力します。 Debug.Log(object message); // 特定のオブジェクトをコンテキストとして関連付けます。 Debug.Log(object message, Object context); // 警告メッセージを黄色で出力します。 Debug.LogWarning(object message); // エラーメッセージを赤色で出力します。 Debug.LogError(object message); // 条件が false の場合にエラーを出力します。 Debug.Assert(bool condition, object message); // コンソールをクリアします(エディター専用)。 Debug.ClearDeveloperConsole();
メソッド一覧
| メソッド | 概要 |
|---|---|
| Debug.Log(message) | 通常のデバッグメッセージをコンソールに白色で出力します。 |
| Debug.LogWarning(message) | 警告メッセージをコンソールに黄色で出力します。実行は継続されます。 |
| Debug.LogError(message) | エラーメッセージをコンソールに赤色で出力します。実行は継続されます(例外はスローしません)。 |
| Debug.LogException(exception) | Exception オブジェクトをエラーとして出力します。スタックトレースも表示されます。 |
| Debug.Assert(condition, message) | condition が false の場合に、message をエラーとして出力します。 |
| Debug.DrawLine(start, end, color) | Scene ビューにデバッグ用の線を描画します(1フレームのみ表示)。 |
サンプルコード
using UnityEngine;
public class DebugSample : MonoBehaviour
{
// 体力の初期値を設定します。
[SerializeField] private int 体力 = 100;
[SerializeField] private int 最大体力 = 100;
void Start()
{
// 基本的なログ出力です。文字列補間も使えます。
Debug.Log($"ゲーム開始: 体力 = {体力}");
// オブジェクトの情報を出力します。コンソールでクリックするとそのオブジェクトがハイライトされます。
Debug.Log($"このオブジェクト: {gameObject.name}", this);
}
void Update()
{
// 毎フレーム出力すると大量のログが出るため、条件を絞って使います。
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("スペースキーが押されました。");
}
}
// ダメージを受けるメソッドです。
public void ダメージを受ける(int ダメージ量)
{
if (ダメージ量 <= 0)
{
// 異常な値の場合は警告を出します。
Debug.LogWarning($"ダメージ量が0以下です: {ダメージ量}");
return;
}
体力 -= ダメージ量;
Debug.Log($"ダメージ: -{ダメージ量} / 残り体力: {体力}");
if (体力 <= 0)
{
Debug.LogError("体力が0になりました!ゲームオーバー処理を確認してください。");
}
// Assert で不正な状態を検出します。
Debug.Assert(体力 <= 最大体力, $"体力が最大体力を超えています: {体力} > {最大体力}");
}
}
概要
Unity の『Debug.Log()』はエディター上のコンソールに出力されるため、本番ビルドで削除し忘れてもゲームの動作には影響しません。ただし、大量の Debug.Log() 呼び出しはパフォーマンスに影響します。毎フレーム呼ばれる Update() 内での使用は最小限にとどめてください。
ビルド時に Debug.Log() を完全に取り除くには、プリプロセッサディレクティブ #if UNITY_EDITOR で囲むか、Release ビルドでは Debug.unityLogger.logEnabled = false を設定する方法があります。GameObject の検索やコンポーネント取得についてはGameObject.Find() / GetComponent<T>()をご確認ください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。