diff --git a/Assets/Scripts/Behaviour/EntitySpawner.cs b/Assets/Scripts/Behaviour/EntitySpawner.cs index 1178b02..fb640d5 100644 --- a/Assets/Scripts/Behaviour/EntitySpawner.cs +++ b/Assets/Scripts/Behaviour/EntitySpawner.cs @@ -265,12 +265,15 @@ namespace RR.Game2D.Behaviour { // Проверка, находится ли эта точка спавна внутри какой-либо активной зоны переопределения SpawnPrefabEntry[] activePrefabs = prefabs; + EntitySpawnerZone matchedZone = null; + for (int i = 0; i < EntitySpawnerZone.ActiveZones.Count; i++) { EntitySpawnerZone zone = EntitySpawnerZone.ActiveZones[i]; if (zone != null && zone.MatchesSpawner(this) && zone.IsPointInside(spawnPosition)) { activePrefabs = zone.Prefabs; + matchedZone = zone; break; } } @@ -293,6 +296,7 @@ namespace RR.Game2D.Behaviour int randomValue = UnityEngine.Random.Range(0, totalWeight); int currentWeight = 0; + GameObject selectedPrefab = null; for (int i = 0; i < activePrefabs.Length; i++) { @@ -301,10 +305,21 @@ namespace RR.Game2D.Behaviour currentWeight += Mathf.Max(1, activePrefabs[i].weight); if (randomValue < currentWeight) - return activePrefabs[i].prefab; + { + selectedPrefab = activePrefabs[i].prefab; + break; + } } - return activePrefabs[activePrefabs.Length - 1].prefab; + if (selectedPrefab == null) + selectedPrefab = activePrefabs[activePrefabs.Length - 1].prefab; + + if (selectedPrefab != null && matchedZone != null) + { + Debug.Log($"[EntitySpawner] Спавнер '{gameObject.name}' переопределил префаб для точки {spawnPosition} на '{selectedPrefab.name}' по зоне '{matchedZone.gameObject.name}'."); + } + + return selectedPrefab; } private bool TryPickSpawnPoint(HashSet usedSpawnPointIndices, out Transform spawnPoint)