Unity-粒子系統(tǒng) C# Job system集成
粒子系統(tǒng)可以使用 Unity 的?C# 作業(yè)系統(tǒng)來對粒子應用自定義行為。
Unity 從 C# 作業(yè)系統(tǒng)跨工作線程分發(fā)工作,并且可以利用 Burst 編譯器。GetParticles()?和?SetParticles()?方法提供類似的功能,但在主線程上運行,并且無法使用 Unity 的 Burst 編譯器。
默認情況下,粒子系統(tǒng)作業(yè)只能訪問屬于該粒子系統(tǒng)的一個或多個粒子。Unity 使用?ParticleSystemJobData?結構將此數(shù)據(jù)傳遞到作業(yè)。必須將作業(yè)需要的任何其他數(shù)據(jù)作為附加參數(shù)傳遞。
為訪問粒子數(shù)據(jù),Unity 支持以下作業(yè)類型:
IJobParticleSystem
此作業(yè)類型在單個工作線程上執(zhí)行單個作業(yè)。此作業(yè)可以訪問屬于粒子系統(tǒng)的每個粒子。有關此作業(yè)類型的示例代碼,請參閱?IJobParticleSystem.Execute()?腳本參考。
IJobParticleSystemParallelFor
此作業(yè)類型跨多個工作線程執(zhí)行多個作業(yè)。每個作業(yè)只能訪問該作業(yè)的 Execute() 函數(shù)指定的索引處的粒子。有關此作業(yè)類型的示例代碼,請參閱?IJobParticleSystemParallelFor.Execute()。
IJobParticleSystem
此作業(yè)類型跨多個工作線程執(zhí)行多個作業(yè)。每個作業(yè)只能訪問該作業(yè)的 Execute() 函數(shù)指定的范圍內的粒子。有關此作業(yè)類型的示例代碼,請參閱?IJobParticleSystemParallelForBatch.Execute()。
Burst
與任何其他 C# 作業(yè)一樣,您可以使用 Burst 編譯器將粒子作業(yè)編譯為高度優(yōu)化的 Burst 作業(yè)。有關更多信息,請參閱?Burst 編譯器文檔。