unity里面的一套简单buffer和技能
// 技能基类
public abstract class Skill {
protected string name; // 技能名称
protected float cooldown; // 技能冷却时间
protected float lastUseTime; // 上次使用时间
public Skill(string name, float cooldown) {
this.name = name;
this.cooldown = cooldown;
this.lastUseTime = -Mathf.Infinity; // 初始值为负无穷,表示技能可以立即使用
}
// 技能使用方法
public void Use() {
if (Time.time - lastUseTime >= cooldown) {
lastUseTime = Time.time;
DoEffect();
}
}
// 技能效果方法,由子类具体实现
protected abstract void DoEffect();
}
// 伤害技能类,继承自技能基类
public class DamageSkill : Skill {
private float damage; // 技能伤害值
public DamageSkill(string name, float cooldown, float damage) : base(name, cooldown) {
this.damage = damage;
}
protected override void DoEffect() {
// 实现技能效果,例如对目标造成伤害
Debug.Log("使用技能 " + name + ",对目标造成 " + damage + " 点伤害。");
}
}
// buffer基类
public abstract class Buffer {
protected string name; // buffer名称
protected float duration; // buffer持续时间
protected float startTime; // buffer开始时间
public Buffer(string name, float duration) {
this.name = name;
this.duration = duration;
this.startTime = Time.time;
}
// 判断buffer是否过期
public bool IsExpired() {
return Time.time - startTime >= duration;
}
// buffer效果方法,由子类具体实现
public abstract void ApplyEffect();
}
// 恢复buffer类,继承自buffer基类
public class HealBuffer : Buffer {
private float healAmount; // 恢复量
public HealBuffer(string name, float duration, float healAmount) : base(name, duration) {
this.healAmount = healAmount;
}
public override void ApplyEffect() {
// 实现buffer效果,例如恢复目标生命值
Debug.Log("应用buffer " + name + ",恢复 " + healAmount + " 点生命值。");
}
}
// 创建一个伤害技能实例
DamageSkill skill = new DamageSkill("火球术", 5f, 50f);
// 使用技能
skill.Use();
// 创建一个恢复buffer实例
HealBuffer buffer = new HealBuffer("治疗术", 10f, 100f);
// 应用buffer
buffer.ApplyEffect();