コードインスペクション:代替の非割り当てメソッドが利用可能
レイキャスティングと 衝突検出メソッドは、 Physicsおよび Physics2Dオブジェクト内で配列を返す場合、呼び出しごとに配列を割り当てるため、頻繁に呼び出す場合はパフォーマンスに影響することがあります。 Unity 5.3 では、あらかじめ用意した配列に結果を格納できる非割り当てバージョンのこれらのメソッドが導入されました。
このインスペクションは、これらのメソッドの割り当てバージョンに警告を追加し、呼び出しを割り当てなしバージョンに書き換えるための簡単な vix を提供し、テキストキャレットを既存の配列を参照する場所に残します。
Physics クラスの関連メソッドは以下のとおりです。
Physics.CapsuleCastAll(英語) > Physics.CapsuleCastNonAlloc(英語)
Physics.OverlapCapsule(英語) > Physics.OverlapCapsureNonAlloc(英語)
Physics.OverlapSphere(英語) > Physics.OverlapSphereNonAlloc(英語)
そして Physics2D の場合:
Physics2D.CapsuleCastAll(英語) > Physics2D.CapsuleCastNonAlloc(英語)
Physics2D.CircleCastAll(英語) > Physics2D.CircleCastNonAlloc(英語)
Physics2D.LinecastAll(英語) > Physics2D.CapsuleCastNonAlloc(英語)
Physics2D.GetRayIntersectionAll(英語) > Physics2D.GetRayIntersectionNonAlloc(英語)
Physics2D.OverlapAreaAll(英語) > Physics2D.OverlapAreaNonAlloc(英語)
Physics2D.OverlapBoxAll(英語) > Physics2D.OverlapBoxNonAlloc(英語)
Physics2D.OverlapCapsuleAll(英語) > Physics2D.OverlapCapsuleNonAlloc(英語)
Physics2D.OverlapCircleAll(英語) > Physics2D.OverlapCircleNonAlloc(英語)
Physics2D.OverlapPointAll(英語) > Physics2D.OverlapPointNonAlloc(英語)
配列のサイズによって、これらの非割り当てメソッドで収集できる結果の最大数が決まることに注意してください。 これらのメソッドは配列のサイズを変更せず、さらに結果が返される可能性があった場合でも通知しません。 この配列の適切なサイズは、可能な最大結果数を決定するか、それ以上の結果が不要になる制限を選択することによって、ユーザー自身が選択する必要があります。 すべてのヒットを処理することが重要な場合は、割り当てバージョンを唯一の選択肢として使用する必要がありますが、繰り返し割り当てを行うことによるパフォーマンスのオーバーヘッドに注意することが重要です。 この警告は、コードコメントを使用するか、 ハイライトの重要度を変更することで抑制できます。
詳細については、 Unity パフォーマンスのベストプラクティスに関する文書(英語)を参照してください。