using UnityEngine; // Вешается на ЛЮБОЕ здание (лесопилка, каменоломня, шахта) -- настраиваешь // в Inspector, какой ресурс и сколько оно производит. Один скрипт на все типы построек. // // ПРИМЕР НАСТРОЙКИ: // Лесопилка: resourceType = Wood, amountPerTick = 5, tickInterval = 3 // Каменоломня: resourceType = Stone, amountPerTick = 4, tickInterval = 3 // Шахта: resourceType = Iron, amountPerTick = 2, tickInterval = 4 (руда добывается медленнее) public class ResourceProducer : MonoBehaviour { [Header("Что производит это здание")] public ResourceType resourceType; public float amountPerTick = 1f; public float tickInterval = 3f; // секунд между "тиками" производства [Header("Уровень здания (для будущего апгрейда)")] public int level = 1; [Tooltip("Множитель производства за каждый уровень выше первого")] public float perLevelMultiplier = 1.2f; private float timer; void Update() { timer += Time.deltaTime; if (timer >= tickInterval) { timer -= tickInterval; Produce(); } } void Produce() { if (ResourceManager.Instance == null) { Debug.LogWarning($"{gameObject.name}: ResourceManager.Instance не найден. " + "Убедись, что на сцене есть объект с компонентом ResourceManager."); return; } float finalAmount = amountPerTick * Mathf.Pow(perLevelMultiplier, level - 1); ResourceManager.Instance.AddResource(resourceType, finalAmount); Debug.Log($"{gameObject.name} произвел {finalAmount} {resourceType}. Итого: {ResourceManager.Instance.GetResource(resourceType)}"); } // Вызывай при апгрейде здания (кнопка "улучшить" повесишь позже) public void Upgrade() { level++; } }