Привязал скрипт ResourceUIText к тексту Wood в TopBar, ресурсы отображаются и обновляются в реальном времени

This commit is contained in:
2026-08-25 18:50:33 +03:00
parent ea7bf90caa
commit 041bf6cf9c
14 changed files with 3415 additions and 2106 deletions
@@ -0,0 +1,56 @@
using Unity.Microsoft.GDK;
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++;
}
}