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#の文法は解説しています)
OnLogMessageイベントハンドラではフックしたログの内容をuGUIのTextに表示しています。
スクリプトをアタッチしてTextを設定する
ヒエラルキーウインドウでCreate->Create Empty
を選択し、空のオブジェクトを作成してください。そのオブジェクトにLogDisplayスクリプトをドラッグ&ドロップしてアタッチします。
また、ヒエラルキーウインドウでCreate-> UI -> Text
を選択し、作成したTextオブジェクトをLogDisplayスクリプトのMessage欄にドラッグ&ドロップしてください。
あとは、実機に転送して実行すれば、ログの内容が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
起動すると次のような画面が表示されます。
続いてUnityで作ったアプリのログだけが表示されるよう、フィルタを作成します。画面左下の「Saved Filter」と書かれた横の緑色のプラスボタンをクリックし、Filter NameとBy Log Tagの欄に「Unity」と入力してOKボタンを押してください。
あとは、実機でアプリを動かすと、Monitorのコンソール上にログが表示されます。こちらも便利ですね!