こんにちは、Unityエンジニアのオオバです。
Unity社から無償で提供されている3DモデルUnityChanKAGURAで遊んでいた時のことです。
Unityエディタの動作が重くて作業ができない状況になりました。 特にSceneビューが顕著に重たい状態です。 SceneビューはUnityの重要機能でよく使います。できるだけ動作は軽いほうが良いですね。
そこで、本記事ではSceneビューの動作が重いときにできる 7つの対策 を紹介します。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
Sceneビューが重いときの7つの対策
Sceneビューが重くなったときの対策を7つ紹介していきます。
①Sceneビューをワイヤーフレーム表示にする
②描画系ウィンドウを減らす
③描画系ウィンドウのサイズを小さくする
④不要なLayerを非表示にする
⑤Hierarchyウィンドウでオブジェクトを非表示にする
⑥Sceneビューの不要な表示設定をOFFにする
⑦GizmosをOFFにする
おすすめ記事 → 死ぬほど重いUnityの起動を高速化する4つの方法
対策①Sceneビューをワイヤーフレーム表示にする
最初の対策はSceneビューの描画設定です。描画方法を 「ワイヤーフレーム」 にすると描画負荷が下がり、Sceneビューの動作が軽くなります。ワイヤーフレームとはポリゴンメッシュの面を表示せず「頂点と頂点をつないだ線(エッジ)だけを表示するモード」です。
ワイヤーフレームに切り替え方はSceneビューのメニューから変更可能です。次の動画を参考にしてみてください。
対策②描画系ウィンドウを減らす
次の対策は描画系ウィンドウの同時表示数です。SceneビューやGameビューといった 描画系のウィンドウを減らすことでUnityエディタ全体の負荷を下げることができます。 つまり、SceneビューやGameビューは負荷が大きいのです。またSceneビュー、Gameビューといったウィンドウは同じウィンドウも複数同時表示可能です。
以下のようにSceneビューやGameビューを複数同時表示するとUnityエディタ自体の負荷が上がります。
もし無駄な描画ウィンドウがあるなら非表示にするとSceneビューの動作が軽くなるかもしれません。
対策③描画系ウィンドウのサイズを小さくする
「対策②描画系ウィンドウを減らす」と同様に描画系ウィンドウの話題です。SceneビューやGameビューの表示領域を小さくすると負荷が下がります。理由はシェーダーの処理はディスプレイの解像度に比例して高くなるからです。つまり描画ウィンドウのサイズが大きくなると負荷が高くなるのです。
上の図解のとおり、Sceneビューを小さくするとSceneビュー自体の動作が軽くなります。Gameビューも同様です。
👉 初心者が覚えておくべき11のUnityエディタ機能【Unityの使い方】
対策④不要なLayerを非表示にする
不要なLayerを非表示にすることでSceneビューの動作が軽くなります。Layerとは「GameObjectごとに設定された値」です。LayerごとにCameraに表示するしないを決めることができるのです(カリングと言います)。
Layer単位でSceneビューへの表示非表示を切り替えることができます。例えば3Dモデルを編集したいからUIを非表示にするといったやり方で負荷を軽減できます。表示するオブジェクトが減れば減るほど動作は軽くなります。
不要なLayerが表示されていないかチェックしてみると良いでしょう。LayerはUnityエディタ右上の「Layers」から設定できます。
対策⑤Hierarchyウィンドウでオブジェクトを非表示にする
「対策④不要なLayerを非表示にする」と同様SceneビューはGameObjectの表示量で負荷が変わります。お手軽に指定のオブジェクトを非表示にする方法の紹介です。非表示にしたいHierarchyウィンドウの目をクリックしてみましょう。するとSceneビューからオブジェクトが非表示になります。次の動画を参考にしてみてください。
目をクリックしてもSceneビューで非表示にならないときの対策
Hierarchyウィンドウの目をクリックしてもSceneビュー上でオブジェクトが表示されないときがあります。そんなときはSceneビュー(次の図解)の目をクリックしてください。するとSceneビュー上のオブジェクトは非表示になるはずです。
以下の動画のとおりSceneビューの「目のボタン」で切り替えられるのです。
👉 今さら聞けないUnityのヒエラルキー(Hierarchy)とは?
対策⑥Sceneビューの不要な表示設定をOFFにする
「ポストエフェクト」や「パーティクル(Particle System)」は一括でSceneビューから非表示にする設定があります。この機能使うことでSceneビュー作業には不要なオブジェクトを非表示にし、負荷を下げることができるのです。
表示設定できる項目は6つ。内容と効果をまとめました。効果についてはUnityプロジェクトの内容やパソコンのスペックに影響をもろ受けるため、あくまで参考程度にしてください。
表示設定名 | 内容 | 効果 |
---|---|---|
Skybox | Skyboxの表示切り替え | - |
Fog | Fog(霧)の表示切り替え | - |
Flares | レンズフレア表示切り替え | - |
Always Refresh | シェーダーアニメーションの常時再生ON/OFF | - |
Post Processing | ポストエフェクトの表示切り替え | ◯ |
Particle Systems | Partycle Systemの表示切り替え | ◯ |
結果的に、表示項目のチェックを外せば負荷は下がるため、Sceneビュー、Unityエディタの動作が重いときには試してみると良いです。
ポストエフェクトの作り方記事 → 【Unity】ポストエフェクト「Bloom(ブルーム)」の作り方
対策⑦GizmosをOFFにする
GizmosをOFFにするとSceneビューの動作は軽くなります。 結論から話すとGizmosの描画は負荷がとても高いです。Gizmosの量によって大きくUnityエディタの動作はもっさりします。 GizmosとはSceneビュー、Gameビューで使えるデバッグ用の表示オブジェクトです。 例えば当たり判定用のColliderがどの部分に配置されているかの可視化に使ったりします。
Sceneビュー内のオブジェクトをドラッグしてみます。するとGizmosの再描画処理が毎回走ります。
上の図はSceneビュー内でオブジェクトを動かした時の負荷です。Gizmosの再描画処理に270msのCPU負荷がかかっています。ちなみに1フレーム約33ms以内に収めることでなめらかな動作になります(30FPSの場合)。270msは約9倍。Sceneビューの動作に影響することが数字からも分かります。
GizmosをOFFにする方法
GizmosをOFFにする方法は、 SceneビューのGizmosボタンをクリックするだけ です。
GizmosをOFFにした時の負荷を確認してみます。
なんと4ms未満まで負荷が下がり、Unityエディタの動作は 約6700%早くなりました。 GizmosをOFFにするととても快適になりました。
Sceneビューが重いときにはGizmosをチェックしてみましょう。
GizmosをOFFにする方法(Unity2021の場合)
Unity2021からSceneビューのデザインが大きく変わりました。
Gizmosは上の図を参考にしてください。
Unity2021ではその他に 開発効率を大幅にアップする新機能 がいくつか実装されました。次の記事にまとめていますのでぜひチェックしてみてください。
UnityのSceneビューが重いときの対策まとめ
Sceneビューが重くなった時の対策を解説してきました。記事の内容を簡単にまとめます。
①Sceneビューをワイヤーフレーム表示にする
②描画系ウィンドウを減らす
③描画系ウィンドウのサイズを小さくする
④不要なLayerを非表示にする
⑤Hierarchyウィンドウでオブジェクトを非表示にする
⑥Sceneビューの不要な表示設定をOFFにする
⑦GizmosをOFFにする
Sceneビューが重くなったときは、とりあえずこの記事で紹介した7の対策を使ってみてください。もちろん、ワイヤーフレームでは作業にならない、Gizmosが非表示だとしんどいといったこともあるでしょう。状況によって対策は取捨選択する必要があります。
大事なことはUnityエディタの負荷を上げている原因を知ること です。負荷の原因さえ知っておけばUnityの扱いやゲームの作り自体も変わってきます。
Sceneビューはゲームづくりにとって大事な機能です。今後も「重くなったトラブル」が発生するかもしれません。そのためにこの記事をブックマークしてすぐに取り出せるようにしておきましょう。情報があふれるこの時代、情報を探すことに時間が取られてしまいます。 Sceneビューを軽くするテクニックが見つかり次第追記 していきますので、ぜひ今後もチェックしてみてください。
この記事が気に入ったらフォローしよう
「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
ぜひチャンネル登録をお願いします!
最後まで読んでいただきありがとうございました!
すばらしいUnityライフをお過ごしください。
- Unity2020.3.31f1
- Unity2021.3.0f1