今回の記事はアセット紹介です.
はじめに
この記事は『Unity アセット真夏のアドベントカレンダー 2020 Summer !』の8月23日の記事です.
昨日はkarukaruさんの「DoozyUIとModern UIでUnity(uGUI)臭さを消してみる」でした.
In-Game Debug Log for AR and VR devices
このアセットは2020年7月13日にリリースされたばかりで,比較的新しいアセットです.
ARやVRデバイス用の軽量なゲーム内デバッグログです. コンソールが通常行うことを何でも出力してくれます.
機能
Asset Store にも書かれていますが,本アセットの機能は以下の通りです.
- プラットフォームに依存しないコード
- IL2CPPとMonoの両方で動作
- カスタマイズ可能な出力
- すべてのスレッドとすべてのコルーチンからのメッセージを出力する
- 目に留まることのないように画面スペースのレイアウト
- CC BYライセンスでコードを編集しやすい(改良・再利用・再配布可能)
目に留まることのないように適当なスペースにログを置けるのが強みです. 実機確認が必要なスタンドアロンデバイス,例えば Oculus Quest や HoloLens 2 等には便利なアセットだと思います.
必要環境要件
Unity 2019.3.5 以降でないと利用できないので注意.Unity 2019.2 以前だと Import できません. (マニュアルでは Unity 2018.3 以降で使えると書かれていますが…)
Text Mesh Pro の Import
使い方
まずは Import ・ Download します.
プレハブ配置
Prefabs フォルダを開くと,ExceptionLog,InformationLog,WarningLogのプレハブがあるので, こちらをHierarchyに配置し,好きな場所に置くだけです.
Debug Log Panel スクリプト
もしプレハブに頼らずにカスタマイズしたい場合,Debug Log Panel スクリプトをアタッチすればよいです.
Debug Log Panel スクリプトの項目はこんな感じ.
Visual Feedback / Log Level
プレハブはWarning,Log,Exceptionのものが提供されていますが,他にもError,Assertもあります.
Log
単に Debug.Log() の呼び出しから来るものを参照します.
Exception
例えば NullReferenceExceptions などの例外を表示します. エラーとは異なり,例外は実行時に処理できます.
Warning
使用しているメソッドが非推奨になった場合など,通常はアプリに直接影響を与えない警告を表示します.
Error
例外と似ていますが,実行時には処理できません. エラーは通常,アプリセッション(とUnity)の終了のシグナルとなるため, これをログに記録してもあまり意味がありません.
Assert
アプリを進めるために満たす必要がある条件を指します. 条件が失敗した場合,メッセージと対応するスタックトレースが出力されます.
Visual Feedback / Max Number Of Messeges
最大で表示できるメッセージ数です.これを超えると古いメッセージが消えます.
Visual Feedback / Include Stack Trace
メッセージにスタックトレースを含めるかどうか設定できます.
Auditory Feedback / Play Sound On Message
Debug Log Panel をアタッチしたオブジェクトに Audio Source を追加する必要があります. こちらをチェックすると,画面にメッセージが出力されるたびに,サウンドが再生されます.
たとえば,ExceptionLogプレハブはこんな感じでAudioSourceが追加されています.
実際に使ってみる
実際に使ってみるとこんな感じです.
サンプルスクリプト
using UnityEngine; public class LogTest : MonoBehaviour { // Start is called before the first frame update void Start() { for (int i = 1; i <= 15; i++) { Debug.Log("Log Test Message" + i); } for (int i = 1; i <= 15; i++) { Debug.LogWarning("Warning Test Message" + i); } } }
Debug.Log,Debug.LogWarningで囲ったものが視覚化されて表示されます.
終わりに
VR Ready PC を持っていて Oculus Link が出来る場合ならば,Oculus Quest のデバッグは簡単ですが, もしない場合はQuestのデバッグ作業の手間が面倒です.HoloLens 2 も Holographic Remoting を駆使すれば, 一応デバッグは出来ますが,HoloLens 2 のハードウェア自体を利用する場合は,Holographic Remoting では確認できません.
ですので,このアセットのプレハブをHierarchyに配置するだけで,デバッグ作業の手間が省けると思います.
以上です.
明日のUnity アセット真夏のアドベントカレンダー 2020 Summer !は yunodaさんによる「AmplifyShaderEditorがまだまだ現役なの知ってほしい」です.