見出し画像

Unity2022でのProfiler更新周り

Unity 2022でもProfilerに更新がありました。

1.FrameTimingManagerの更新
2.MemoryProfilerがついにversion 1.0に!
3.ObjectのInstance化・削除したときの情報が取得可能に!
その他(今更ですが Profilerの一部がReleaseビルドでも取得可能でした)

1.FrameTimingManagerの更新

FrameTimingManagerも更新が行われました
・DirectX11への対応
・GPUの処理時間がEditor上でも取れるように
FrameTimingでRenderThreadやMainThreadなど情報が多く取れるようになりました


こちらのForum(英語)にも詳細があります

2.MemoryProfilerがついにversion 1.0に!

MemoryProfilerパッケージがついに1.0になりました。
Experimentalの従来のバージョンでも、かなり安定して使えていましたが、ついに1.0になりました。(長い時間かけて熟成されました!!!)

3.ObjectのInstance化・削除したときの情報が取得可能に!

マニアックなのですが…個人的な目玉機能です。

エンジン側の仕込むデータに追加がありObject.Register/Object.Unregisterでデータ取得可能

エンジン側で Object生成時に Object.Register、破棄時にObject.Unregisterという形でProfilerに情報を載せるようになりました。

どんな名前のObjectがどのようなTypeで、InstanceIdはどうなっているかなどが埋め込まれています。
そちらに合わせて FrameDataView.GetUnityObjectInfoFrameDataView.GetUnityObjectNativeTypeInfoと言った形のAPIが追加されました。

下記のようなコードで、オブジェクトのinstance化したときの情報を一覧で取得できるようになっています。

またこの対応によって、実機でのProfilingもよくなりました。

プロファイルのSampleがオブジェクトのインスタンスと紐づいている場合の実機ビルドの情報が増えました。
2021まででは、実機ビルドのプロファイリングではオブジェクト名が表示されていませんでしたが、2022からは表示されるようになりました!

その他

今更ですが、Releaseビルドでも、Profilerから一部データ取得可能でした。

Unity 2022からの新機能と言うわけではないのですが…
限られた情報がReleaseビルドでもProfilerが記録しており、API経由での取得が可能でした

こんな感じでProfilerRecorderからの情報取得がリリースビルドでも可能になっていました。


Unity 2020.3でも確認したところ、情報が取れていました。。

過去記事:Unity 2021 / 2020での更新内容はコチラ


この記事が気に入ったらサポートをしてみませんか?