Files
daluandou/Assets/Script/ManaSystem.cs
T
huadexuan f93d69d8ee ```
docs(clipboard): 添加剪贴板功能相关图片资源

添加了两个剪贴板功能的截图文件,用于文档说明和功能展示。
```
2026-09-09 23:59:15 +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;
}
}
}
}