JetBrains Rider 2026.1 Help

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