おもちゃラボ

Unityで遊びを作ってます

【Unity】Androidの実機上でDebug.Logの内容を確認する2つの方法

Unity EditorではDebug.Logはコンソールウインドウに表示されますが、Androidの実機に転送した場合、コンソールウインドウでDebug.Logの表示は確認できません。

そこで、Androidの実機で実行しているアプリのDebug.Logを見る方法を2つ紹介します。

Debug.Logをフックする

Debug.Logの内容をフックして、uGUIのTextで表示させる方法です。結構手軽で気に入ってますが、こだわりだすとツールを作るのが苦痛になるので、機能はそこそこで(笑)

Debug.Logのメッセージをフックする

まずはログをフックするスクリプトを作成します。プロジェクトビューで右クリックしCreate -> Script -> C# Scriptを選択して、LogDisplayという名前で保存します。

スクリプトができたら、次のプログラムを入力してください。

using UnityEngine;
using UnityEngine.UI;

public class LogDisplay : MonoBehaviour
{
    public Text message = null;

    private void Awake()
    {
        Application.logMessageReceived  += HandleLog;
    }

    private void OnDestroy()
    {
        Application.logMessageReceived  += HandleLog;
    }

    private void HandleLog( string logText, string stackTrace, LogType type )
    {
        message.text = logText;
    }
} 

このスクリプトではlogMessageReceivedイベントにOnLogMessageイベントハンドラを追加しています。イベント?イベントハンドラ?という方は、拙書「」を参考にしてください(Unityに特価した本ではありませんが、ひととおりのC#の文法は解説しています)

[asin:4797390263:detail]

OnLogMessageイベントハンドラではフックしたログの内容をuGUIのTextに表示しています。

スクリプトをアタッチしてTextを設定する

ヒエラルキーウインドウでCreate->Create Emptyを選択し、空のオブジェクトを作成してください。そのオブジェクトにLogDisplayスクリプトをドラッグ&ドロップしてアタッチします。

f:id:nn_hokuson:20170915132136j:plain

また、ヒエラルキーウインドウでCreate-> UI -> Textを選択し、作成したTextオブジェクトをLogDisplayスクリプトのMessage欄にドラッグ&ドロップしてください。

f:id:nn_hokuson:20170915132241j:plain

あとは、実機に転送して実行すれば、ログの内容がTextに表示されます。

Android Device Monitorを使う

いや、わざわざ実機上でログを確認しなくても、ツール上で確認できれば十分だよ!という人(というか、普通はこっちですね。笑)はAndroid StudioについてくるMonitorアプリを使いましょう。

MonitorアプリはWindowsなら「C:\Users\ユーザー名\AppData\Local\Android\sdk\」、Macなら「/Users/ユーザ名/Library/Android/sdk/tools/monitor」にあります。ターミナルから次のように打ってMonitorアプリを起動しましょう。

$ /Users/ユーザ名/Library/Android/sdk/tools/monitor

起動すると次のような画面が表示されます。

f:id:nn_hokuson:20170915132609j:plain

続いてUnityで作ったアプリのログだけが表示されるよう、フィルタを作成します。画面左下の「Saved Filter」と書かれた横の緑色のプラスボタンをクリックし、Filter NameとBy Log Tagの欄に「Unity」と入力してOKボタンを押してください。

f:id:nn_hokuson:20170915132653j:plain

あとは、実機でアプリを動かすと、Monitorのコンソール上にログが表示されます。こちらも便利ですね!