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

文章介绍了在Unity中设计的一个简单的技能系统,包括技能基类Skill,用于设置冷却时间和使用方法,以及具体的伤害技能类DamageSkill。同时,还定义了Buffer基类来处理增益或减益效果,如HealBuffer用于恢复生命值。通过这两个基类,可以方便地扩展其他类型的技能和效果。

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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值