unity里面的一套简单buffer和技能

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

猜你喜欢

转载自blog.csdn.net/pengfeicfan/article/details/129351256