И последний вариант - попросить клиента подождать пока один из объектов не освободиться. Самый сложный по технической реализации и вряд ли подойдет для пуль, так как игра просто встанет. Чтобы продолжить геймплей нужна пуля, но пули нет поэтому жди, но если геймплей ждет то пуля не исчезнет, вечный круг, смерть приложения. Такой подход очень полезен в других продуктах, или же для других не геймплейных объектов.
Комментарий недоступен
Насчет пула можно согласиться, но тут тоже проблема в том что размер увеличивается х2. Для оптимизации можно было создать хеш таблицу и получить сложность О(1), но не думаю что объектов в пуле будет так много что нужно над этим заморачиваться
А в чем проблема в моем подходе? EntityManager подписан на каждый из спавнеров и при получении события спавна реагирует соответствующе для каждого типа объекта. Возможно такой подход выйдет из под контроля когда вырастет размер игры, но сейчас все работает отлично
Если паттерн создания общий то и объект будет одмнаковый, разве нет?) Фабрики в моем понимании для того чтобы работу создания объекта поручить другому объекту и благодаря этому не забывать об инициализации или еще о чем нибудь важном
Не совсем какие контроллеры, но EntityManager на Awake подписывается на спавнеров. Я знаю что иметь всю логику в монобехах это не круто с точки зрения оптимизации, но здесь это необходимо
В любом случае оптимизировать нужно когда надо, иначе код будет еще сложнее