Не очень понял схему. Что такое SO? У тебя кодогенерация?
SO - scriptable object,
Задача решалась такая, есть допустим оружие, нужно дать возможность накидывать разные эффекты на него, урон огнём, выстрел себе в колено и вот это вот всё. Я хотел что бы логика оружие и его эффектов были полностью разделены, то есть в оружии есть просто слоты в которые можно положить любой эффект, для удобства использовал SO, но вылезла проблема, что бы настроить параметры эффектов нужно каждый раз создавать новый SO. От этой идеи отказались, теперь в эффектах оружия есть просто объект контейнер с кучей параметров и энумом эффектов, для каждого эффекта написан свой кастомный редактор полей, и на выходе, есть фабрика которая получает контейнер, с типом эффекта, парамерами, и ебашить тебе класс-логику этого эффекта. Но чет как то криво. Добавление любого нового эффекте ведёт к тому что нужно, обновлять фабрику, обновлять кастомный редактор.