粒子系统可以使用 Unity 的 C# 作业系统来对粒子应用自定义行为。
Unity 从 C# 作业系统跨工作线程分发工作,并且可以利用 Burst 编译器。GetParticles() 和 SetParticles() 方法提供类似的功能,但在主线程上运行,并且无法使用 Unity 的 Burst 编译器。
默认情况下,粒子系统作业只能访问属于该粒子系统的一个或多个粒子。Unity 使用 ParticleSystemJobData 结构将此数据传递到作业。必须将作业需要的任何其他数据作为附加参数传递。
为访问粒子数据,Unity 支持以下作业类型:
此作业类型在单个工作线程上执行单个作业。此作业可以访问属于粒子系统的每个粒子。有关此作业类型的示例代码,请参阅 IJobParticleSystem.Execute() 脚本参考。
此作业类型跨多个工作线程执行多个作业。每个作业只能访问该作业的 Execute() 函数指定的索引处的粒子。有关此作业类型的示例代码,请参阅 IJobParticleSystemParallelFor.Execute()。
此作业类型跨多个工作线程执行多个作业。每个作业只能访问该作业的 Execute() 函数指定的范围内的粒子。有关此作业类型的示例代码,请参阅 IJobParticleSystemParallelForBatch.Execute()。
与任何其他 C# 作业一样,您可以使用 Burst 编译器将粒子作业编译为高度优化的 Burst 作业。有关更多信息,请参阅 Burst 编译器文档。
Unity 2019.3 中的新功能