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();