コードインスペクション:Typeof は Burst では禁止されています
このインスペクションは、 バーストコンパイラー(英語)によってコンパイルされたコード内で typeof(...) 式が使用されていることを報告します。
Burst は、高性能かつ制限された C# のサブセットを対象としており、 typeof 式はサポートしていません。 これらの式は、多くの場合、管理メタデータまたは System.Type オブジェクトへのアクセスを伴いますが、制限された Burst 実行環境ではこれらは利用できません。
仕組み
アナライザーは、Burst コンパイルされたコンテキスト(たとえば、 [BurstCompile] 属性でマークされたメソッドやジョブ)内の typeof 式を監視します。
この制限は、 typeof が直接使用される場合 (たとえば、変数に代入する場合) でも、 System.Type 引数を必要とする API (SharedStatic<T>.GetOrCreate(typeof(int)) など) を呼び出す際に間接的に使用される場合にも適用されます。
サンプル
この例では、 typeof(int) 式が Burst コンパイルされたジョブの Execute メソッド内で使用されています。 これはサポートされていないため、警告が表示されます。
using Unity.Burst;
using Unity.Jobs;
[BurstCompile]
public struct ExampleJob : IJob
{
public void Execute()
{
// Reported: typeof(...) is not supported in Burst
var t = typeof(int);
}
}
using Unity.Burst;
using Unity.Jobs;
[BurstCompile]
public struct ExampleJob : IJob
{
public void Execute()
{
// Move type-based logic out of Burst or use generic alternatives
var value = 0;
}
}
クイックフィックス
このインスペクションには専用のクイックフィックス機能がありません。 Burst でコンパイルされたコードから typeof 式を削除するか、Burst と互換性のある汎用式またはコンパイル時代替式に置き換えることで、手動で修正してください。
2026 年 6 月 12 日