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