Оптимизация Particle System с помощью системы заданий C#
Particle System может использовать C# Job System Unity, чтобы применять к частицам пользовательское поведение.
Unity распределяет работу системы заданий C# между рабочими потоками и может использовать Burst Compiler. Методы GetParticles() и SetParticles() предоставляют сходную функциональность, но выполняются в основном потоке и не могут использовать Burst Compiler в Unity.
По умолчанию задание Particle System имеет доступ только к одной или нескольким частицам, принадлежащим к Particle System. Unity передает эти данные заданию с помощью ParticleSystemJobData структура. Любые другие данные, нужные заданию, необходимо передать дополнительными параметрами.
Для доступа к данным частиц Unity поддерживает следующие типы заданий:
IJobParticleSystem
Этот тип задания выполняет одно задание на одном рабочем потоке. Задание имеет доступ ко всем частицам, принадлежащим Particle System. Пример кода для этого типа задания см. в IJobParticleSystem.Execute() Справочник по скриптам.
IJobParticleSystemParallelFor
Этот тип задания выполняет множество заданий через множество рабочих потоков. Каждое задание может получить доступ только к частице с индексом, указанным функцией Execute() задания. Пример кода для этого типа задания см. в IJobParticleSystemParallelFor.Execute() Справочник по Скриптам.
IJobParticleSystemParallelForBatch
Этот тип задания выполняет несколько заданий через несколько рабочих потоков. Каждое задание может получить доступ только к частицам в диапазоне, указанном функцией Execute() задания. Пример кода для этого типа задания см. в IJobParticleSystemParallelForBatch.Execute() Справочник по скриптам.
Burst
Как и в случае любого другого задания C#, вы можете использовать Компилятор Burst для компиляции ваших заданий частиц в высокооптимизированные задания Burst. Дополнительные сведения см. в документации Компилятора Burst.