``` docs(readme): 更新文档说明 - 添加项目使用指南 - 完善API接口说明 - 修正错误的配置示例 ``` 注意:由于您提供的code differences部分为空,以上是一个示例模板。当您有具体的代码变更时,请提供详细的变更内容以便生成更准确的commit message。
43 lines
1.0 KiB
C#
43 lines
1.0 KiB
C#
using UnityEngine;
|
|
|
|
[RequireComponent(typeof(WorldHealthBar))]
|
|
public class BuildingHealth : MonoBehaviour
|
|
{
|
|
[Header("建筑生命")]
|
|
[Min(1f)] public float maxHealth = 500f;
|
|
|
|
private WorldHealthBar healthBar;
|
|
|
|
public float ProductionProgress => healthBar != null
|
|
? Mathf.Clamp01(healthBar.currentEnergy / healthBar.maxEnergy)
|
|
: 0f;
|
|
|
|
private void Awake()
|
|
{
|
|
healthBar = GetComponent<WorldHealthBar>();
|
|
healthBar.maxHealth = maxHealth;
|
|
healthBar.currentHealth = maxHealth;
|
|
healthBar.maxEnergy = 1f;
|
|
healthBar.currentEnergy = 0f;
|
|
}
|
|
|
|
public void SetProductionProgress(float normalizedProgress)
|
|
{
|
|
if (healthBar != null)
|
|
{
|
|
healthBar.SetEnergy(Mathf.Clamp01(normalizedProgress) * healthBar.maxEnergy);
|
|
}
|
|
}
|
|
|
|
public bool ReceiveDamage(float damage, GameObject attacker = null)
|
|
{
|
|
if (damage <= 0f || healthBar == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
healthBar.TakeDamage(damage);
|
|
return true;
|
|
}
|
|
}
|