你好,我正在做一个统一的游戏,我想创造生命实体.
要执行此操作,我想为所有具有运行状况的实体创建一个接口
以下是我的LivingEntities界面:
public interface ILivingEntity
{
public float Hp { get; protected set; }
public float MaxHp { get; protected set; }
public float HpRegenPerSecond { get; protected set; }
public event EventHandler Event_died;
protected virtual void Awake()
{
MaxHp = Hp;
}
protected virtual void receiveDamage(IAttack attackSource)
{
Hp -= attackSource.damage;
watchForEntityDeadOrNot();
}
protected abstract void watchForEntityDeadOrNot();
protected void regenHp()
{
Hp += Time.deltaTime * HpRegenPerSecond;
if (Hp > MaxHp)
Hp = MaxHp;
}
}
重点是:
- 我需要惠普在get中公开
- 我想在我的界面中给出每秒hp再生的代码(不要在每个活体中重新实现相同的代码)
- 我希望hp只能从活体自身设置
我见过这样的把戏:
在界面中:
public float Hp{get;}
在实施过程中:
public float Hp{
get{code...}
protected set{code...}
}
但在我的例子中,如果我只在子类实现中定义setter,我无法在接口中为我的"regenHp"方法提供任何代码.
怎么做?