GameObjectsを静的としてマークする必要があるのはいつですか?


9

これは、対応するUnityのドキュメントです。

静的ゲームオブジェクトに関するUnityドキュメンテーションページの説明によると、ゲームオブジェクトを静的としてマークすると、パフォーマンスに悪影響を与えることがあります(たとえば、静的バッチ処理によりメモリ使用量が増加します)

では、これらの機能を正確に使用したいのはいつですか?

前もって感謝します。

脚注:
私は現在、スプライトとLineRendererがたくさんある2Dトップダウンゲームを開発していますが、3Dオブジェクト(クワッドさえも)はありません。すべてのゲームオブジェクトは、既製のプレハブから手続き的にインスタンス化されています。LineRenderersは、フレームごとにスクリプトから更新されます。そして、ほぼすべてのスプライトは常に動いています。スプライトの大部分は同じマテリアルを共有しています。すべてのLineRendererも同じ素材を共有しています。


1
森の木ではありません。私たちはその悪いことに噛まれました。ビルド時間は長く、レベルは大規模なデータです。注:これに関するドキュメントでは、フォレストには使用しないでください。:)
Almo 2016

@Almo私は男の子と一緒です。この痛みを理解できます
Hamza Hasan

回答:


6

GameObjectsを静的にする必要がある場合と、すべきでない場合について、厳密な規則はありません。

少なくとも、存続期間中に移動しないオブジェクトに対してのみ実行してください。しかし、あなたはそれがあなたがすべきかどうかを評価するためにそれが何をするかを知る必要があります。

メッシュをシーンデータに固定するため、アイテムのゲームオブジェクトのオーバーヘッドはありません。これは、ビルド時にシーンデータを変更するコストと、最終的にビルドされるアプリケーションの追加メモリコストでパフォーマンスが向上することを意味します。

これは多くの場合問題ありませんが、たとえば森林で問題を引き起こす可能性があります。また、ツリーの頂点を一度保存​​してGPU図面のコピーを保存する代わりに、それらの頂点をすべての場所に複製する必要があります。ビルドには時間がかかり、アプリ内のスペースが必要になります。ツリーを静的にしないと、アプリは3〜4 GBから300〜400 MBになりました。ビルド時間は3-4時間から1時間になりました。

すべてを言った!あなたのゲームは2dであり、それらのトンがなければ、シーン内のGameObjectsをstaticに設定することでおそらく利益が得られます。


プレハブを静的にするとインスタンスも静的になりませんか?
S.TarıkÇetin2016

実行時にそれらをインスタンス化するのではない場合...それらをどのように「静的」にすることができますか?多分私は間違っている...確認します。
アルモ2016

2
プレハブが静的としてマークされている場合、インスタンス化されたインスタンスも静的であることを確認しました。
S.TarıkÇetin16年

1

一般的に言えば、アプリのライフサイクル全体で(ピクセルでも)移動しないものはすべて静的としてマークする必要があります。通常、ライトのベイク、navmeshパスのベイクなどに役立ちます。

まあ、3Dオブジェクトなしで開発している場合は、リラックスして冷やしてください。リアルタイムレンダリング、シャドウ、その他の問題について心配する必要はありません。新しいシーンに付属している唯一のライトを削除することさえ;)

まあ、私がどこかで間違っていれば、誰でも私を訂正することができます。


3
これは森のようなものでは本当に間違っています。それはドローコールを減らします...しかしそれはメッシュにすべての木を焼きます。つまり、ツリーの頂点を一度保存​​してGPU図面のコピーを保存する代わりに、それらの頂点をすべての場所に複製する必要があります。ビルドには時間がかかり、アプリ内のスペースが必要になります。ツリーを静的にしないと、アプリは3〜4 GBから300〜400 MBになりました。
アルモ2016

@Almo huggggeeeeeeの違い
Hamza Hasan

2Dゲームだからといって、これをお勧めすることを回答の冒頭で明確にすべきだと思います。
アルモ2016

@Almoおかげさまで、静的なバッチ処理は、オーブンのように熱いかどうかわからないような、触れるのは危険なことだと思います。:)
S.TarıkÇetin2016

@Almoは、必要に応じてこのbroを自由に編集してください。先に行く
ハムザ・ハサン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.