コードインスペクション:「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 日