public void DestroyEnemy(EnemyController controller, EnemyView view) { var model = _controllerModelPairs[controller]; if (model.Description.CreateNewEnemyAfterDie) { EnemyController[] controllers; EnemyModel[] models; EnemyView[] views; int numPrefab = Convert.ToInt32(model.Description.TypeEnemy); int countChilds = 2; _enemySpawnManager.SpawnChildEnemy(model, _enemyPrefabs[numPrefab], countChilds, out controllers, out models, out views); if (controllers != null && models != null && views != null) { for (int i = 0; i < countChilds; i++) { controllers[i].Destroy += DestroyEnemy; _controllerModelPairs.Add(controllers[i], models[i]); _viewModelPairs.Add(views[i], models[i]); _enemyModels.Add(models[i]); } } } Destroy?.Invoke(model); _enemyModels.Remove(model); _controllerModelPairs.Remove(controller); _viewModelPairs.Remove(view); controller.Destroy -= DestroyEnemy; controller = null; }