パーティクルシステムは、Unity の C# Job System を使用して独自の動作をパーティクルに適用できます。
Unity は C# Job System からの作業をワーカースレッドに分配し、Burst コンパイラーを利用します。GetParticles() と SetParticles() メソッドは同様の機能を提供しますが、メインスレッドで実行され、Unity の Burst コンパイラーを使用することはできません。
デフォルトでは、パーティクルシステムのジョブは、そのパーティクルシステムに属するパーティクルにのみアクセスできます。Unity はParticleSystemJobData 構造体を使用してこのデータをジョブに渡します。ジョブが必要とするその他のデータは、追加のパラメーターとして渡す必要があります。
パーティクルデータにアクセスするために、Unity は以下のジョブタイプをサポートします。
このジョブタイプは、1 つのワーカースレッドで 1 つのジョブを実行します。ジョブは、パーティクルシステムに属するすべてのパーティクルにアクセスできます。このジョブタイプのコード例は、IJobParticleSystem.Execute() のスクリプトリファレンスを参照してください。
This job type executes multiple jobs across multiple worker threads. Each job can only access the particle at the index specified by the job’s Execute() function. For example code on this job type, see the IJobParticleSystemParallelFor.Execute() Scripting reference.
This job type executes multiple jobs across multiple worker threads. Each job can only access the particles within the range specified by the job’s Execute() function. For example code on this job type, see the IJobParticleSystemParallelForBatch.Execute() Scripting reference.
他の C# ジョブと同様に、Burst コンパイラーを使用して、パーティクルジョブを高度に最適化されたBurst ジョブにコンパイルできます。詳細は、Burst コンパイラーに関するドキュメント を参照してください。
Unity 2019.3 の新機能