以前デモシーンの概要をまとめましたが、その中のDiagnosticsDemo(診断システムデモ)シーンの詳細を確認してみました。
確認環境
- Unity 2018.3.10f1
- Microsoft.MixedReality.Toolkit.Unity.Foundation-v2.0.0-Beta2.unitypackage
- Microsoft.MixedReality.Toolkit.Unity.Examples-v2.0.0-Beta2.unitypackage
シーン概要
- Diagnostics
- DiagnosticsDemo
診断システムを使用して実行時のアプリケーションパフォーマンスを確認するサンプル
- DiagnosticsDemo
シーン詳細
シーンを実行すると以下のような表示になります。fpsと使用メモリ、ピークメモリ、最大メモリが表示されています。
シーン起動時のHierarchyは以下のようになっています。
SceneDescriptionPanel 配下はただの説明パネル用のオブジェクトなので、実質 SceneContent 一つだけががメインのオブジェクトになります。
SceneContentのInspectorを見ると
- Diagnostics Demo COntrols
- Speech Input Handler
の2つのコンポーネントが付いています。
以下それぞれの詳細を見ていきます。
Diagnostics Demo Controls
ソースはシンプルな内容となっており、 Diagnostics/Profilerの表示・非表示をトグルで切り替えるためのメソッドがあるだけです。
Speech Input Handler
音声コマンドで先ほどの2つのトグル動作を実現しています。
ここで 「Toggle Profile」、「Toggle Diagnostics」の2つの音声コマンドがKeywordとし登録されていますが、シーン内にはこれらのワードは登録されていません。どこで登録されているのかを探したところ、DefaultMixedRealitySpeechCommandsProfile に登録されていました。
Profileは継承関係を辿るとScriptableObjectから派生したものであることが分かるので、一度作成してしまえば使いまわしができて便利そうです。
<継承関係>
- ScriptableObject
- BaseMixedRealityProfile
- MixedRealitySpeechCommandsProfile
- BaseMixedRealityProfile
まとめ
Diagnostics Systemはコアシステムとして実装されているので、プロファイラを有効にすることでいつでも表示できるようになります。 アプリケーションのfps、メモリ使用量が特別な実装を必要とせずに確認できるのでお手軽にパフォーマンスチェックができて便利だと思います。 HoloToolkitではFPSDisplayというPrefabを利用して実行時にFPSを確認することが多かったと思いますが、MRTKv2ではDiagnostics Systemを利用することになりそうです。
参考
MRTKに組み込まれている診断システムは VisualProfiler-Unity を組み込んだもののようです。