From 4550e85e3018beba12acc9da18aa72ede2f63495 Mon Sep 17 00:00:00 2001 From: Danil Iarosh Date: Thu, 13 Aug 2026 14:20:10 +0300 Subject: [PATCH] Add spawner override diagnostics to PickPrefab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - В метод PickPrefab класса EntitySpawner добавлено логирование Debug.Log при успешном переопределении префаба зоной. - Это позволяет легко проверять, какие спавнеры и на каких точках подверглись влиянию зоны переопределения. --- Assets/Scripts/Behaviour/EntitySpawner.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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)