# Debug クラス

> Use the Debug class in your project code to write messages and errors to the Console window.

Debug クラスは、エディター上の情報を視覚化し、実行中のプロジェクトで何が起こっているのかを理解したり調査したりするのに役立ちます。例えば、Console ウィンドウにメッセージを出力したり、シーンビューやゲームビューに視覚化のためのラインを描画したり、スクリプトからエディターの再生モードを一時停止したりすることができます。

このページでは、Debug クラスの概要と、Debug クラスを使ってスクリプトを作成する際の一般的な使用方法について説明します。Debug クラスのすべてのメンバーの詳細なリファレンスについては、[Debug スクリプトリファレンス](/engine/6000.0/script-reference/unity-engine/debug.md) を参照してください。

## エラー、警告、メッセージのロギング##logging-errors-warnings-and-messages

Unity 自体も、エラー、警告、メッセージを Console ウィンドウに出力することがあります。Debug クラスは、以下のように、独自のコードを使って全く同じことを行う機能を提供します。

```
Debug.Log("This is a log message.");
Debug.LogWarning("This is a warning message!");
Debug.LogError("This is an error message!");
```

3 つのタイプ (エラー、警告、メッセージ) のそれぞれのアイコンが、Console ウィンドウに表示されます。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ConsoleShowingMessageWarningAndError.png)

Unity や独自のコードによって Console ウィンドウに書き込まれたものはすべて、[ログファイル](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md) にも書き込まれます。

Console で **Error Pause** が有効になっていると、Debug クラスを使って Console に書き込まれたエラーは、Unity の再生モードを一時停止させます。

また、任意でこれらのログメソッドに第 2 パラメーターを指定して、メッセージが特定のゲームオブジェクトに関連していることを示すことができます。

```
using UnityEngine;

public class DebugExample : MonoBehaviour
{    void Start()
    {
        Debug.LogWarning("I come in peace!", this.gameObject);
    }
}
```

これにより、Console 上でメッセージをクリックすると、そのメッセージに関連するゲームオブジェクトが Hierarchy 上でハイライトされ、メッセージがどのゲームオブジェクトに関連しているかを確認することができるというメリットがあります。下の画像では、"I come in peace!" という警告メッセージをクリックすると、"Alien (8)" というゲームオブジェクトがハイライトされることを示しています。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/ConsoleMessageWithContextGameObject.png)

また、Debug クラスはシーンビューやゲームビューでラインを描画するための 2 つのメソッドを提供しています。これらは [DrawLine](/engine/6000.0/script-reference/unity-engine/debug/draw-line.md) と [DrawRay](/engine/6000.0/script-reference/unity-engine/debug/draw-ray.md) です。

この例では、シーンのすべてのスフィアゲームオブジェクトに Debug.DrawLine を使ったスクリプトを加え、Y が 0 である平面からの垂直距離を示します。なお、この例の最後のパラメーターは、ラインがエディターに表示されている時間を秒で表しています。

```
using UnityEngine;

public class DebugLineExample : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        float height = transform.position.y;
        Debug.DrawLine(transform.position, transform.position - Vector3.up * height, Color.magenta, 4);
    }
}
```

そして、シーンビューでの結果は次のようになります。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/DebugDrawLineExampleInScene.png)

## 追加リソース##using-the-debug-class

* [コンソールウィンドウ](/engine/6000.0/manual/unity-editor/using-the-editor/console.md)
* [ログファイル](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md)
