2017-09-29 4 views
1

私はレイテンシモードへの「LowLatency」を設定しようとしていますUnity3D 5.6内の我々のアプリケーションのクリティカルなタイミングセクションガベージコレクションの実行が停止しない - GCLatencyMode.LowLatencyはUnity3Dで設定できませんか?

中にガベージコレクションを一時停止(または減らす)しようとしていますが、GCSettings.LatencyModeそれをチェックする時にのみ値インタラクティブ

GCSettings.LatencyMode = GCLatencyMode.LowLatency; 

答えて

2

Unity3D 5.6はInteractive値を持っていなかったが、あなたは、あなたがダウンロードしたときにユニティ2017は、ユニティのこのバージョンはサポートして以来、ことを得ることができますを示しています。それをダウンロードし、.NET 4.6を有効にしてください。thisポストからそれを有効にする方法を見ることができます。

これはUnityであることを覚えておいてください。コンパイルする必要がありますが、それが機能するとは限りません。ガベージコレクションを実行しない場合は、ゲームの実行中にメモリを割り当てないでください。ゲームの始めにそれを行い、オブジェクトプールを使用してゲームオブジェクトを処理します。

+0

.net 3.5にはインタラクティブがあります https://msdn.microsoft.com/en-us/library/system.runtime.gclatencymode(v=vs.90).aspx – morty346

+1

はい、わかりました。 UnityはMicrosoftの実装ではなくMonoを使用します。それを悪化させるために、古いバージョンは古いAPIを実装していない古いMonoバージョンを使用します。 Unity 2017はそれを修正しました。コメントする前にそれを試してみてください。 – Programmer

+0

私はあなたの助けに感謝します...大規模なプロジェクトではプラットフォーム全体を切り替えることは、もう少し明確化を求めてもう少し作業していただければ幸いです。あなたの 'それをコメントする前に試してみてください'は評価されていません... MSDNのドキュメントとコンパイルの両方が私には解決策があることを指摘しています...さらに、 'Interactive'は5.6では正常に動作します戻り値元の質問で概説したように、「低レイテンシ」に設定すると動作しません。 – morty346

関連する問題