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

简介: 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();
相关文章
|
图形学 开发者
unity实战之lol技能释放范围
unity实现ol技能释范围放判定
unity实战之lol技能释放范围
|
6天前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
17 2
|
6天前
|
图形学
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
21 0
|
6天前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
17 2
|
6天前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(上)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
16 2
|
6天前
|
存储 JSON 图形学
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
7 0
|
6天前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(下)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(下)
14 0