粒子系统可以使用 Unity 的 C# 作业系统来对粒子应用自定义行为。
Unity 从 C# 作业系统跨工作线程分发工作,并且可以利用 Burst 编译器。GetParticles() 和 SetParticles() 方法提供类似的功能,但在主线程上运行,并且无法使用 Unity 的 Burst 编译器。
默认情况下,粒子系统作业只能访问属于该粒子系统的一个或多个粒子。Unity 使用 ParticleSystemJobData 结构将此数据传递到作业。必须将作业需要的任何其他数据作为附加参数传递。
为访问粒子数据,Unity 支持以下作业类型:
此作业类型在单个工作线程上执行单个作业。此作业可以访问属于粒子系统的每个粒子。有关此作业类型的示例代码,请参阅 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 中的新功能