BurstDiscard 属性
Burst のコンパイル対象コードに含まれない C# コードを実行する際に、マネージオブジェクトを、Burst 内でコードの該当部分をコンパイルせずに使用したい場合があります。このためには、以下のようにメソッドで [BurstDiscard] 属性を使用します。
[BurstCompile]
public struct MyJob : IJob
{
public void Execute()
{
// 完全な .NET ランタイムから実行される場合のみ実行されます
// [BurstCompile] 属性を指定してこのジョブをコンパイルすると
// このメソッド呼び出しは破棄されます
MethodToDiscard();
}
[BurstDiscard]
private static void MethodToDiscard(int arg)
{
Debug.Log($"This is a test: {arg}");
}
}
Note
[BurstDiscard] が指定されたメソッドは戻り値を持ちません。
ref または out の各パラメーターを使用すると、Burst とマネージのどちらでコードを実行するかを指定できます。
[BurstDiscard]
private static void SetIfManaged(ref bool b) => b = false;
private static bool IsBurst()
{
var b = true;
SetIfManaged(ref b);
return b;
}