コードインスペクション:一部の SharedStatic`1.GetOrCreate オーバーロードがコンパイラーエラーを引き起こす
このインスペクションは、 バーストコンパイラー(英語)によってコンパイルされたコード内で、 System.Type 引数を取る SharedStatic<T>.GetOrCreate オーバーロードの使用を報告します。
これらのオーバーロードは C# では利用可能ですが、Burst ではコンパイラーエラーが発生する可能性があります。 インスペクションでは、代わりに汎用的な GetOrCreate<...>() オーバーロードを使用することを推奨しています。
サンプル
この例では、 GetOrCreate メソッドが typeof 式で呼び出されています。 これは Burst ではサポートされていないため、エラーとして検出されます。
using Unity.Burst;
using Unity.Jobs;
[BurstCompile]
public struct ExampleJob : IJob
{
public void Execute()
{
// Reported: typeof is not supported in GetOrCreate
var shared = SharedStatic<int>.GetOrCreate(typeof(double));
}
}
using Unity.Burst;
using Unity.Jobs;
[BurstCompile]
public struct ExampleJob : IJob
{
public void Execute()
{
// Correct: Use the generic overload
var shared = SharedStatic<int>.GetOrCreate<double>();
}
}
クイックフィックス
このインスペクションには専用のクイックフィックス機能がありません。 汎用的な SharedStatic<T>.GetOrCreate オーバーロードに切り替えることで手動で修正してください。 2 つの型引数の場合は、 GetOrCreate(typeof(...), typeof(...)) の代わりに GetOrCreate<TContext, TSubContext>() を使用してください。
2026 年 6 月 12 日