こんにちわ、Unityエンジニアのオオバです。

先日公開されたテラシュールブログさんのProfilerについての有用な記事。
【Unity】知っておくと少し便利な Profiler に関する小技集 - テラシュールブログ

乗っかる形でオオバが知ってるProfilerについての小ネタを紹介します。

この記事の内容

任意の処理のCPU負荷を調べる

特定の数行の処理不可を知りたい時が開発中によくあります。

Profiler.BeginSampleProfiler.EndSampleで処理を挟むと、その間のCPU負荷をProfilerに表示させることが出来ます。
Profilerに表示される名前はBeginSampleの第1引数に文字列で指定します。

サンプルコード
BeginSampleTest.cs · GitHub

ただしProfilerに並ぶ処理数が多いため、自分が仕込んだプロファイルが見つかりづらいです。そんなときは検索機能を使います。

Unity Profiler小技集_0

右上の検索窓から処理のキー(今回は「### Sampling ###」)を入力するとその処理が実行されたフレームでプロファイラに表示されます。

このように気になる処理不可を調べるということがサクッと出来るのでオオバは結構使っている小技です。

GPUのフレームタイム表示の落とし穴

こちらUnity5.5以上のバージョン(検証バージョン : 5.5.1p2)で可能となります。5.4系では使用できません。

Unity Profiler小技集_1

Unity5.4系(検証バージョン : Unity5.4.1p4)ではGPU Usageがこのような表示になります。

GPU Usageが上手く動かないというときは、Unityのバージョンが解決のヒントになるかも知れません。

Profiler自体が重いという認識を持つ

もはや小技ではなく気持ちの話ですが、Profiler自体が重いです。

ガチガチな負荷検証をする上ではProfilerを起動している事自体が負荷になるということを認識しておいたほうが良いかもしれません。
またDeep Profileは更に負荷が上がるので、それも心に留めておきたいところです。

Unity Profiler小技集_2

まとめ

テラシュールブログさんの記事を読んで、Unity5.6からプロファイルしたデータをSaveとLoadが出来るということを初めて知りました。
ちなみに中の人は5/8 ~ 9に開催されるUnite2017Tokyoでは、Unity5.6のNavMeshについてガッツリお話されるようです。

Unity 5.6よりNavmeshの低レベルAPIが公開され、Navmeshのほぼ全てがコントロール可能になりました。このセッションでは、Navmeshの低レベルAPIを活用する事で実現した高レベルなAPIサンプルの活用方法や、低レベルAPIの内容について紹介します。

NavMeshとは経路探索機能のことです。オオバも先日始めました。

Unity NavMesh始めました

また2017.3.30執筆時点でUnityのバージョンは5.6.0f2
もうすぐ正式リリースで楽しみです。

オススメ記事
検証環境