Files
huadexuan 11f1af357d 根据提供的code differences信息,由于没有具体的代码变更内容,我将生成一个通用的commit message模板:
```
docs(readme): 更新文档说明

- 添加项目使用指南
- 完善API接口说明
- 修正错误的配置示例
```

注意:由于您提供的code differences部分为空,以上是一个示例模板。当您有具体的代码变更时,请提供详细的变更内容以便生成更准确的commit message。
2026-10-02 10:04:12 +08:00

93 lines
1.9 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class ManaSystem : MonoBehaviour
{
public static ManaSystem Instance { get; private set; }
[Header("能量配置")]
[Min(1)]
public int maxMana = 10;
[Min(0f)]
public float manaRegenRate = 1f;
[Header("UI 引用")]
public Image[] manaBeads;
private float currentMana;
private float manaRegenTimer;
public float CurrentMana => currentMana;
public int CurrentManaInt => Mathf.FloorToInt(currentMana);
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
}
private void Start()
{
currentMana = maxMana;
UpdateManaUI();
}
private void Update()
{
if (currentMana < maxMana)
{
manaRegenTimer += Time.deltaTime;
if (manaRegenTimer >= manaRegenRate)
{
manaRegenTimer = 0f;
currentMana = Mathf.Min(currentMana + 1f, maxMana);
UpdateManaUI();
}
}
}
public bool TryConsumeMana(int cost)
{
if (CurrentManaInt < cost)
{
return false;
}
currentMana -= cost;
if (currentMana < 0f)
{
currentMana = 0f;
}
UpdateManaUI();
return true;
}
public void AddMana(int amount)
{
currentMana = Mathf.Min(currentMana + amount, maxMana);
UpdateManaUI();
}
private void UpdateManaUI()
{
if (manaBeads == null || manaBeads.Length == 0)
{
return;
}
int fullBeads = CurrentManaInt;
for (int i = 0; i < manaBeads.Length; i++)
{
if (manaBeads[i] != null)
{
manaBeads[i].enabled = i < fullBeads;
}
}
}
}