Unity3d particle-effects pool
Unity 5.5.3.p1 Active Scene - test_01
-
Spawner - текстовый класс для загрузки эффектов из ресурсов и их последующего спауна
-
PEffectsPool - основной класс, отвечающий за создание болванок эффектов, спауна и деспауна эффектов
-
PeffectData - класс в котором хранятся данные по параметрам эффекта
-
PeDummy - болванка на которую накатываются данные по эффекту которые нужно показать
-
Как работает PEffectsPool создает N болванок эффектов. Создавать может все сразу, а может в течении времени, также докидывает новые если текущего кол-ва нехватает. Spawner просит PEffectsPool завести новые типы эффектов и предоставляет путь к ним в ресурсах. PEffectsPool - считывает данные по эффектам и сохраняет. Spawner - запрашивает спаун какого-то эффекта, тим которого он уже просил добавить. Тогда PEffectsPool берет болванку и накатывает на неё ранее сохранненые параметры
По сравнению со стандартным способом пулинга эффектов в таком случае кол-во эффектов в пуле может быть меньше.
Не доделано
- на данные момент копируются только модули Main,Shape,Emission,ColorOverLifetime,Render (но остальные тоже можно)
- не поддерживаются эффекты с вложениями (но опять же можно доделать)
- не умеет выгружать ненужные уже типы эффектов
Из того что напрашивается
- делать не синглтоном, а рамках какой-то более приятной конструкции (подписки на события например)
- напришивается менеджер материалов, текстур для эффектов
- хорошо бы собирать данные по эффектам в редакторе, но тут вопрос какие нужны , какие ненужны. Скорее всего в идеале часть нужно грузить из редактора, часть в рантайме в зависимости от текущего контента