コードインスペクション:明示的な文字列比較の代わりに「CompareTag」を使用してください。
tag(英語) プロパティは、1 つ以上のゲームオブジェクトを識別するために使用できる文字列値を返します(タグの詳細についてはドキュメント(英語)を参照してください)。 ただし、このプロパティにアクセスするたびに、文字列が Unity ネイティブオブジェクトからマネージド C# 文字列にコピーされるため、メモリ割り当てが発生します。
このインスペクションは、 tag への明示的な文字列比較をハイライトします。例:
if (gameObject.tag == "Tank")
また、この比較を CompareTag(string) の呼び出しに変換するクイックフィックスも提供されており、これは Unity エンジンのネイティブメソッド呼び出しのため、メモリの割り当てを回避できます:
if (gameObject.CompareTag("Tank"))
ただし、 CompareTag には動作上のわずかな違いがあります。実行時にタグの存在を確認し、存在しない場合は Unity コンソールにエラーが通知されます。 これは Unity の方針変更ではありません。タグは使用前に存在している必要がありますが、単純な文字列の等値比較ではこの確認ができません。
詳細については、Unity および Unity のフォーラムでのこの回答(英語)の Unity ゲームにおけるガベージコレクションの最適化(英語)の CompareTag のセクションを参照してください。
2026 年 6 月 12 日