Unity6.1新機能!パフォーマンス問題点を特定してくれるProject Auditorの使い方

目次

Unity6.1新機能!

Unity6.1が正式リリースされました㊗️

Unity
Unity 6.1:サポートされたアップデートリリースが公開されました Unity 6.1 の公開をお知らせします。これは、Unity 6 ファミリー初のアップデートリリースです。このリリースでは、安定した高いパフォーマンスを発揮するエンジンを提供す...

大きな変化点は、以下あたりでしょうか。

・Deferred+ の対応
・可変レートシェーディング
・DirectX12対応
・ProjectAuditor機能の追加

私個人としては2Dゲームを作る機会が多いので、2Dゲーム制作で一番影響の大きい、ProjectAuditorという新機能について、使い方や実際に使ってみた結果どんな感じになるかなど共有します!

ProjectAuditorは何ができるの?

プロジェクト全体のパフォーマンス上の問題になる箇所をまとめて指摘してくれます。
ソースコードだけでなく、アセットのインポートの設定含めてプロジェクト全体での問題点と改善点を提言してくれます。

Project Auditorの使い方

インストール方法

パッケージマネージャーからインストール出来ます。

Window > Analysis > Project Auditorからウィンドウを表示して使用します。

Project Auditorの使い方

以下では、Unity公式のプロジェクトを使って使い方を紹介していきます。

あわせて読みたい
Happy Harvest - 2D Sample Project | チュートリアル | Unity Asset Store Get the Happy Harvest - 2D Sample Project package from Unity Technologies and speed up your game development process. Find this & other チュートリアル options o...

Project Auditorを開いたら、Start Analysisを行います。

しばらくすると、以下のような分析レポートが出来上がります。

Unityが提言する問題点と改善点について確認していきます。

Codeブロックの[Go to Code]を押すとコードの一覧に飛びます。

コードの一覧と、各コードの持つUnityが考える問題点の詳細と提言が表示されます。

文字を表示するエリアが狭くて正直ここは見づらいです。
また、より重要度の高い問題点を絞り込むことも出来ます。

次に、アセット問題と改善点についても見ていきます。
[Go to Assets]からアセットの一覧に飛びます。

分かりやすい改善点を見ていきましょう。

例えば、以下のような問題点が表示されます。

Details
The AudioClip is long, and its Load Type is set to Decompress On Load. The clip's memory footprint may be excessive, and decompression may impact load times.

Recommendation
Consider setting the Load Type to Compressed In Memory or Streaming. If you have concerns about the CPU cost of decompressing Compressed In Memory clips for playback, consider a format which is fast to decompress, such as ADPCM.

翻訳すると以下の通り。

詳細
AudioClip が長く、Load Type が Decompress On Load に設定されています。クリップのメモリフットプリントが大きすぎる可能性があり、解凍がロード時間に影響する可能性があります。

推奨
Load TypeをCompressed In MemoryまたはStreamingに設定する。Compressed In Memoryクリップを解凍して再生する際のCPUコストに懸念がある場合は、ADPCMなど解凍が速いフォーマットを検討してください。

Audioの設定を見ると、確かにオーディオが全部「Decompress On Load」になっていました。

BGMなどの音源の場合、この設定だとメモリを多く消費してしまうので、あまり良い設定ではありません。
なので、提案の通り、AudioClipの設定を変更する、みたいな使い方をするんだと思います(多分)。

クソコードが問題として検出されるか?

試しにクソコードを作って、問題点として認識されるか試してみます。
以下のクソ要素をいれたコードを作ってみました。

・使わない変数がある
・Resourcesから毎フレームロードする
・毎フレームDebug.Logを出力する
・毎フレームInstantiateする

この状態でレポートを作り、該当のコードの問題点を出してみました。

検出された問題点は以下のとおり。

Creating Objects at runtime by calling Object.Instantiate can take a significant amount of CPU time and allocates managed memory.
実行時にObject.Instantiateを呼び出してObjectを作成すると、かなりのCPU時間がかかり、管理されたメモリが割り当てられます。

The Object.name property allocates managed memory.
Object.nameプロパティは、管理されたメモリを確保する。

Boxing happens where a value type, such as an integer, is converted into an object of reference type. This causes an allocation on the managed heap.
ボックス化は、整数などの値型が参照型のオブジェクトに変換されるときに起こる。これにより、管理ヒープ上に割り当てが発生する。

Debug.Log methods take a lot of CPU time, especially if used frequently.
Debug.Logメソッドは、特に頻繁に使用する場合、多くのCPU時間を要する。

といった感じの指摘を出してくれました。
指摘事項をダブルクリックすると、該当するコードに飛んでくれます。

使ってみた感想まとめ

使ってみた感想。
コード単体に対する指摘事項になるので、プロジェクト全体で最適化出来るか、みたいな指摘まではしてくれないので、リファクタリングをProject Auditorだけに頼れるほどのものではないと思います。

ただ、Project Auditorを使うことで、「あ、この使い方ってよくない使い方だったんだ」みたいなことを学べるのはいいかもですね。
個人的にはプロジェクト終盤で念の為使ってみる、みたいな使い方をしてみるくらいかなぁ。

それでは素敵なゲーム制作ライフを!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ゲーム制作の敷居を下げ、もっと多くの人にゲーム作りを楽しんでもらうために、ゲームをカンタンに作る方法を”網羅的に”解説しています。
よかったらブックマークお願いします。
Twitter(X)もよければフォローお願いします。

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次