Console (コンソール) ウィンドウは Unity によって生成されたエラー、警告、その他のメッセージを表示します。
また、Debug.Log、Debug.LogWarning、Debug.LogError 関数を使用してコンソールに独自のメッセージを表示できます。
Unity のメインメニューから Console を開くには、Window > General > Console の順に選択します。
A. Console ウィンドウのメニューには、ログファイルを開く オプション、リスト内の 各メッセージの表示量を調整 するオプション、スタックトレース を設定するオプションがあります。
B. Console ツールバーには、メッセージの表示を制御するオプションと、メッセージを 検索し、フィルタリングする オプションがあります。
C. Console のリストには、ログに記録された各メッセージのエントリが表示されます。
メッセージを選択すると、テキスト全体が詳細表示エリアに表示されます。表示するメッセージの行数は選択可能です。
詳しくは、後述の 行数の調整 を参照してください。
D. 詳細エリアには選択したメッセージの全文が表示されます。
スタックトレース を有効にすると、コードファイル内の特定の行への参照がクリック可能なリンクとして、ここに表示されます。
Console ウィンドウのツールバーには、メッセージの表示方法やメッセージの検索とフィルタリングを制御するオプションがあります。
オプション | 機能 | |
---|---|---|
Clear | コードからのメッセージはすべて削除しますが、コンパイラーからのエラーメッセージは保持します。 | |
Collapse | エラーメッセージの最初の実例のみを表示します。 これは、null 参照などのランタイムエラーに役立ちます。ランタイムエラーは、各フレームの更新時に生成されることがあります。 |
|
Clear On Play | 再生モードに入るたびにコンソールを自動的にクリアします。 | |
Clear on Build | プロジェクトをビルドするときにコンソールをクリアします。 | |
Error Pause | スクリプトから Debug.LogError が呼び出されるたびに再生を一時停止します。実行の特定の時点で再生をフリーズし、シーンを検査したい場合に便利です。 Debug.Log が呼び出される場合は、このオプションは再生を一時停止しません。 |
|
[Attach-to-Player] | ドロップダウンを開き、さまざまなオプションでリモートデバイス上で実行中の開発ビルドに接続し、コンソールにプレイヤーログを表示します。 このオプションのラベルには、ターゲットの開発ビルド (Console ウィンドウに表示されるログのビルド) の名前が表示されます。Console がリモートビルドに接続されていない場合は、ラベルは Editor となり、Console ウィンドウに表示されるログはローカルの Unity エディターのものであることを示します。 |
|
Player Logging | コンソールがリモートの開発ビルドに接続されている場合、ビルドのプレイヤーログが有効になります。 このオプションを無効にすると、ログは一時停止されますが、コンソールはターゲットビルドに接続されたままになります。 このオプションを無効にすると、このドロップダウンの他のオプションも選択できなくなります。 Player Logging にリストされているビルドを選択すると、Console ウィンドウにログが表示されます。 |
|
Editor | Console がリモートの開発ビルドに接続されている場合は、このオプションを選択すると、リモートビルドからのログではなくローカルの Unity プレイヤーからのログが表示されます。 | |
<Enter IP> |
Enter Player IP ダイアログを開きます。ここで、リモートデバイスの開発ビルドの IP アドレスを指定できます。 ダイアログの Connect ボタンをクリックして、ビルドに接続し、ドロップダウンメニューの一番下にある開発ビルドのリストに加えます。 |
|
[DEVELOPMENT BUILDS] | 使用可能な開発ビルドを一覧表示します。これには、自動的に検出されたビルドだけでなく、Enter IP オプションを使って追加するビルドも含まれます。 | |
Messages switch | コンソールのメッセージ数を表示します。クリックしてメッセージを表示/非表示にします。 | |
Warnings switch | コンソールの警告数を表示します。クリックして警告を表示/非表示にします。 | |
Errors switch | コンソールのエラー数を表示します。クリックしてエラーを表示/非表示にします。 |
コンソール検索フィールドを使うと、特定のキーワードでコンソールメッセージを検索できます。検索キーワードを入力すると、メッセージはフィルタリングされ、一致するテキストを含むメッセージのみが表示されます。検索テキストが、ヒットしたメッセージの表示部分にある場合、最初の一致部分をハイライトします (後述の 行数の調整 を参照)。同じメッセージ内で最初の一致以外は強調表示されません。
コンソールメッセージに表示されるもの (数字や特殊文字など) はすべて検索できます。例えば、メッセージに含まれるキーワードではなく、メッセージが記録された時間を検索したい場合があります。
検索は、何であれ、検索フィールドに入力したものと完全一致するものを検索します。1 度に 2 つの異なる用語を検索することはできません。また、一般的な検索エンジンの演算子を使用することもできません。
コンソールメッセージはタイプによってフィルタリングすることもできます。検索フィールドの横にあるボタンをクリックして切り替えます。
ボタン | メッセージタイプ |
---|---|
メッセージ | |
警告 | |
エラー |
各コンソールのエントリーは最大 10 行まで可能です。
リストの各エントリで表示する行数を制御するには、Console メニューボタンをクリックし、メニューから Log Entry > [X] Lines を選択します。ここで、[X] は各エントリごとの表示行数です。
行数を増やすと、各エントリのテキストがより多く表示されますが、同時に表示できるエントリ数は減ります。
行数はコンソール検索機能には影響しません。コンソール検索機能は常にメッセージの全文を検索します。一致するテキストが非表示の行にある場合、検索結果にそのメッセージを含みますが、一致するテキスト部分を表示/強調するためにメッセージを展開しません。詳細を表示するエリアに完全なメッセージテキストが表示されますが、一致するテキストを強調しません。
Unity は、メッセージをコンソールやログファイルに出力するときに、詳細なスタックトレース情報を加えることができます。これは、例えば、エラーメッセージがあまり明確でない場合などに便利です。その場合、スタックトレースはエラーの原因を特定するのに役立ちます。
コンソールは、マネージコードとアンマネージコードのスタックトレース情報を提供します。
マネージコード は Unity で実行されている C# スクリプトを意味します。これに該当するのは、Unity に同梱されているスクリプト、独自に作成するカスタムスクリプト、アセットストアのプラグインに含まれるサードパーティスクリプト、エンジンで実行されるその他の C# スクリプトなどです。
マネージコードにアクセスでき、デバッグ時に変更することが可能な場合があります。そうでない場合もあります。例えば、マネージスクリプトがマネージ .dll にコンパイルされている場合、マネージスタックトレース情報を見ることができますが、元のソースファイルにアクセスできないかぎり、マネージコードを変更することはできません。
アンマネージコード は、ネイティブの Unity エンジンコード、またはマシン上やターゲットビルドプラットフォーム上で直接実行されるネイティブプラグインのコードを意味します。
アンマネージコードは、通常、C または C++ コードからコンパイルされます。ネイティブの元々のバイナリソースコードがない限り、アクセスすることはできません。
ほとんどの場合、マネージスタックトレースは C# コードのデバッグを助けるために使用します。ただし、完全なスタックトレースは状況によっては役立つ場合があります。
例えば、アンマネージスタックトレースは、エラーがコードやエンジンによって発生するかどうかを判断するのに役立ちます。また、エラーが発生したエンジンの領域を特定するのにも役立ちます。これは、特に、マネージスタックトレース情報がまったくない場合に有用で、エラーメッセージはあまり説明的ではありません。
ノート: スタックトレース、特に、完全なスタックトレースの解決は、リソース負担の高い作業です。これらのオプションは、デバッグの目的でのみ使用してください。
スタックトレースにどの程度の詳細を含むかを指定するには、Console メニューボタンをクリックし、メニューから Stack Trace Logging > [MESSAGE TYPE] を選択します。この [MESSAGE TYPE] はスタックトレース情報を加えるメッセージのタイプです。次に、以下のいずれかのオプションを選択します。
None: Unity はスタックトレース情報を出力しません。
ScriptOnly: Unity はマネージコードのスタックトレース情報を出力します。
Full: Unity はマネージとアンマネージ、両方のコードのスタックトレース情報を出力します。
また、スクリプティング API を使用してスタックトレースのログを制御することもできます。詳細は、スクリプトリファレンスの Application.SetStackTraceLogType を参照してください。
メッセージを選択し、Console ウィンドウの一番下にある詳細エリアでフルテキストを表示すると、コードファイルの特定の行へのスタックトレース参照が、クリック可能なリンクになります。任意のリンクをクリックすると統合開発環境 (IDE) の参照されているファイルを開きます。
Cnsole ウィンドウのメニューから ログファイル を開くことができます。Open Player Log または Open Editor Log を選択します。
他のメッセージの中で、Unity はコード内の廃止された API 呼び出しの使用に関する警告を表示します。例えば、以前は、MonoBehaviour と他のクラスに「ショートカット」があり、一般的なコンポーネントタイプにアクセスしていました。そのため、例えば、以下のようなコードを使って、オブジェクトの Rigidbody にアクセスすることができました。
// "rigidbody" 変数はクラスの一部で、ユーザースクリプトでは定義されません。
Vector3 v = rigidbody.velocity;
これらのショートカットは非推奨になったため、現在、以下のようなコードを使用する必要があります。
// コンポーネントにアクセスするには、GetComponent を使用します。
Rigidbody rb = GetComponent<Rigidbody>();
Vector3 v = rb.velocity;
コンソールが非推奨の API 呼び出しを検出すると、Unity は警告メッセージを表示します。このメッセージをダブルクリックすると、Unity は自動的に非推奨の使用法を推奨する同等のものにアップグレードしようとします。