79 lines
2.0 KiB
C#
79 lines
2.0 KiB
C#
using UnityEngine;
|
|
|
|
/// <summary>
|
|
/// 金矿建筑,定时产出金币
|
|
/// </summary>
|
|
public class GoldMine : MonoBehaviour
|
|
{
|
|
[Header("金币产出")]
|
|
[Tooltip("每次产出的金币数量")]
|
|
[SerializeField] private int goldPerProduction = 50;
|
|
|
|
[Tooltip("产出间隔(秒)")]
|
|
[SerializeField] private float productionInterval = 5f;
|
|
|
|
[Header("可选:血条和进度条")]
|
|
[SerializeField] private WorldHealthBar healthBar;
|
|
|
|
private float productionTimer = 0f;
|
|
|
|
private void Awake()
|
|
{
|
|
// 如果没有手动指定,尝试自动获取
|
|
if (healthBar == null)
|
|
{
|
|
healthBar = GetComponent<WorldHealthBar>();
|
|
}
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
// 初始化进度条(使用能量条显示产出进度)
|
|
if (healthBar != null)
|
|
{
|
|
healthBar.maxEnergy = 100f;
|
|
healthBar.currentEnergy = 0f;
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (GoldManager.Instance == null) return;
|
|
|
|
productionTimer += Time.deltaTime;
|
|
|
|
// 更新进度条
|
|
if (healthBar != null)
|
|
{
|
|
float progress = Mathf.Clamp01(productionTimer / productionInterval);
|
|
healthBar.currentEnergy = progress * 100f;
|
|
}
|
|
|
|
// 达到产出时间
|
|
if (productionTimer >= productionInterval)
|
|
{
|
|
ProduceGold();
|
|
productionTimer = 0f;
|
|
}
|
|
}
|
|
|
|
private void ProduceGold()
|
|
{
|
|
if (GoldManager.Instance != null)
|
|
{
|
|
GoldManager.Instance.AddGold(goldPerProduction);
|
|
Debug.Log($"{gameObject.name} 产出金币 +{goldPerProduction}");
|
|
|
|
// 可以在这里播放特效和音效
|
|
// TODO: 添加金币产出特效
|
|
}
|
|
}
|
|
|
|
// 在编辑器中显示信息
|
|
private void OnDrawGizmosSelected()
|
|
{
|
|
Gizmos.color = Color.yellow;
|
|
Gizmos.DrawWireSphere(transform.position + Vector3.up * 2f, 0.5f);
|
|
}
|
|
}
|