Доработать
1. [SerializeField] private float _explosionRadius = 5f; [SerializeField] private float _explosionForce = 100f; - эти данные может хранить сам взрыватель, раз у вас на каждом кубе свой взрыватель
Или свойства по ним не нужны, если извне не получаете данные
2. private List<Rigidbody> _createdParts; - если не используется, то оно и не нужно
3. part.GetComponent<Rigidbody>() - а где гарантия, что данный компонент есть на объекте?
4. private Cube _cube; - поле не нужно. Вы в метод передаете нужный куб
Мои мысли:
Все ошибки связаны с одним непонимением - я думал что при создании нового куба в Init нужно передавать данные из прошлого куба по отдельности, но почему то не подумал, что можно передать весь куб целиком это было связано с тем что внутри Init'a куба мне пришлось делать ещё Init компонента Exploader и мне это показалось как то костыльно и сейчас так кажется, но с другой стороны такое решение удобнее расширять так что думаю норм.
Новое решение: https://github.com/NoNameDeleted/CubesExplosion/tree/e1a0674cde1b4de85f7afca67612ddff406c6bfc