
Audio Dispatcher for DOTS від Sniveler Code
https://ift.tt/H4u6tsh
Високопродуктивний, потокобезпечний міст для відтворення звуків AudioSource безпосередньо з Burst-компільованих ECS-завдань. Особливості: пула Zero-GC, розумне перехоплення голосів та відстеження циклів без затримок головного потоку.
Архітектура та продуктивність:
- 100% сумісний із Burst: Ініціюйте звуки з будь-якого завдання (Job) або системи.
- Без виділення GC: Повністю попередньо виділені пули об’єктів для як одноразових, так і циклічних звуків.
- Жодних затримок головного потоку: Подвійне буферизування забезпечує, що головний потік ніколи не чекає на працівників ECS.
- Оптимізовано під кеш: Структури AudioEvent явно упаковані до 32 байтів, що дозволяє помістити рівно дві події на кожну лінію кешу CPU.
Особливості:
- Пріоритетне перехоплення голосів: Автоматично повторно використовую найменш гучні AudioSources, коли пули досягають максимальної місткості.
- Тіньове відстеження циклів сутностей: Прикріплюйте циклічні звуки до рухомих сутностей. Система автоматично зупиняє звук, якщо цільова сутність знищується.
- Незалежний від TimeScale: Використовує AudioSettings.dspTime, щоб тривалості звучання обчислювалися коректно навіть під час ефектів уповільнення руху.
- Зручний Builder API: Чистий, ланцюговий синтаксис для ініціювання звуків.
- Підтримка AudioMixer: Направляйте звуки у різні групи мікшера (SFX, Music, UI).
- 3D просторовий звук: Повна підтримка Spatial Blend, Min/Max Distance та кривих затухання.
- Автоматично згенеровані константи C#: Позбавляють від пошуку за рядками та помилок за допомогою стабільних Hash ID.
Ініціювання стандартного звуку Unity з чистого ECS відомо як складне. Audio Dispatcher вирішує це елегантно.
Audio Dispatcher for DOTS — готова до використання система моста аудіо, орієнтована на дані. Вона дозволяє вашим Burst-компільованим завданням викликати, переміщати та зупиняти керовані компоненти AudioSource, не торкаючись Managed Heap або зупиняючи головний потік.
Як це працює:
Замість того, щоб примушувати головний потік чекати завершення ваших завдань, система використовує архітектуру команд подвійного буфера. Ваші системи з високою частотою (наприклад, кулі або вибухи) записують події, вирівняні по кешу до 32 байт, у безблокувальну чергу. Присвячений Burst-компільований «Мозок» обробляє ці події, керує логікою пулінгу та передає головному потоку чистий буфер команд для виконання.
Ідеально під будь-який жанр:
Незалежно від того, чи будуєте ви величезний RTS, хаотичний Bullet Hell чи динамічний шутер, цей інструмент забезпечить масштабованість аудіо разом із кількістю сутностей.
Зручний для розробників:
Вам не потрібно писати шаблонний код. Використайте включений Fluent API для виклику звуків безпосередньо всередині вашого IJobEntity:
AudioID.EXPLOSION.Shot(position).Volume(0.8f).Apply(writer);
Ключові моменти:
- Чисті архетипи: Циклічні звуки (наприклад двигуни танків) слідують за вашими сутностями за допомогою «Shadow Tracking», тобто ваші основні геймплейні сутності залишаються незмінними та щільно вміщуються в пам’ять.
- Розумне перехоплення голосів: Якщо ваш аудіопул заповнений, система не просто обрізає випадкові звуки. Вона обчислює пріоритети та автоматично замінює найтихіший або найдальший звук.
- Стабільні ID: Ідентифікатори Audio генеруються як стабільні хеші. Перестановка вашої аудіобази ніколи не зламає ваш код.
Ціна $0.00
HI-FI News
через найновіші пакети Unity Asset Store http://www.unity3d.com/
23 квітня 2026 року о 16:25
April 23, 2026 at 04:25PM

Залишити відповідь