トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

Unityのプロファイラを見る

VRのUnityプロジェクトが激重になったので、どうにかしたい。

まずはプロファイラを見るところから。

何もわかっていないので間違っていると思います。

Statistics

GameViewの右上からみれる

f:id:bibinbaleo:20200911115008p:plain

Unity2019だとめっちゃ見やすい

f:id:bibinbaleo:20200911133202p:plain

レンダリング統計ウィンドウというらしい

docs.unity3d.com

プロファイラのRenderingのところでも見れる数値の一部と同じ?

docs.unity3d.com

f:id:bibinbaleo:20200911115110p:plain

Batches数はモバイルだと200以下がいいって。

2000ぐらいになってるときがあった。

 

fpsはVRなら60以上。

90,120とか欲しいのかな?

weekly.ascii.jp

プロファイラー

Unityのプロファイラー

Window>Analytics>Profiler

f:id:bibinbaleo:20200911114459p:plain

見方参考リンク

www.youtube.com

kan-kikuchi.hatenablog.com

kan-kikuchi.hatenablog.com

少し古いけど、このスライドが各項目解説してあってとても良かった。

www.slideshare.net

light11.hatenadiary.com

スキャンの長さ変更

ちなみにUnity2019.3だと、以前は300フレームしかスキャンされなかったが2000まで増やせるようになる!

Preferences>Analysisから変えられる

f:id:bibinbaleo:20200915153251p:plain

おおー長い〜〜

f:id:bibinbaleo:20200915153654p:plain

最近プロファイラを勉強しているので嬉しい!

以前はVRで処理が重くなったとこで止めようとしてももたもたして間に合わなかったので。 

メモリー

f:id:bibinbaleo:20200911132622p:plain

UnityはUnity側のメモリ、MonoはC#のメモリ

Monoが大きいなら自分たちのスクリプトのせい?

Reserved Totalは予約されているメモリ

 C#メモリが膨らんでいる。ファイル読み込みや通信のために一時的に大量のc#メモリを使用している。

 

GameObject in SceneはGameObjectの数。

モバイルなら3000程度らしい

TotalObjectCountが増え続けていたら破棄されていないのでまずい

 

左上からDetaied>Take Sample Editorで細かい内訳が見れる

f:id:bibinbaleo:20200911132920p:plain

右のReferencedByからどのオブジェクト化をシーンでハイライトできる。

f:id:bibinbaleo:20200915092741p:plain

CPU

CPUのRenderingが多かったら描画が重い。それ以外はロジックが重い

f:id:bibinbaleo:20200911134710p:plain

Othersをオンにするとかなり増える

f:id:bibinbaleo:20200911114602p:plain

CPUのある個所を押したらこんな感じ。

Time msが多い場所を見ると良い

f:id:bibinbaleo:20200911142257p:plain

BehaviorUpdateの下がスクリプトのUpdateの処理。

f:id:bibinbaleo:20200915105729p:plain

Canvas.SendWillRendercanvasesがUI処理(見当たらない)

Physics.Processingが物理

 

 

Timelineにしたらこの表示

f:id:bibinbaleo:20200911142405p:plain

描画が重いかどうか

解像度をかなり下げてfpsが上がるかどうか

using UnityEngine.XR;
using UnityEngine;

public class ChangeResolution : MonoBehaviour
{
    [SerializeFieldRange(0f1f)] private float _ViewportScale = 0.5f;
    void Start()
    {
        XRSettings.renderViewportScale = _ViewportScale;
    }
}

FrameDebugger

余計な描画はWindow>Analytics>FrameDebugger

f:id:bibinbaleo:20200911114459p:plain

見方がよくわからない・・・

f:id:bibinbaleo:20200911134908p:plain

OVRProfiler

OculusIntegrationを使っているとOculus>Tools>OVRProfilerでプロファイラを見れる

f:id:bibinbaleo:20200911130159p:plain

 目安も書いてある

f:id:bibinbaleo:20200911134952p:plain

CPU

Triangles(メッシュ):10万以下がよい

Vertices(頂点):10万以下がよい

Draw Call:100以下がよい

 200を超えたあたりから見直しが必要

 Draw Call=Batch数

tech.drecom.co.jp

CPUの負荷になる

マテリアルを減らすといい

wordpress.notargs.com

light11.hatenadiary.com

developer.oculus.com

参考

まだ見てないけど・・・

www.youtube.com

www.slideshare.net

最後に

何もわからない

StandaloneでやるよりEditorでやるほうが軽いこともある。なぜならエディターにはデータのキャッシュがあるから