在选择角色时,我目前拥有一个基础职业。
abstract class CharacterClass
{
public abstract void AbilityOne();
public abstract void AbilityTwo();
}
我的字符来自于这个类。
class Warrior : CharacterClass
{
public override void AbilityOne()
{
// implement ability one here
}
public override void AbilityTwo()
{
// implement ability two here
}
}
最后,我使用这段代码选择战士。
CharacterClass selectedClass = new Warrior(); // start the game as a Warrior
这种方式非常有效。但是当涉及到冷却等问题时,我希望保持代码的简洁性,因此考虑创建一个Ability
类。
我的抽象父类
abstract class CharacterClass
{
public Ability AbilityOne { get; set; }
public Ability AbilityTwo { get; set; }
}
战士职业
class Warrior : CharacterClass
{
public Warrior()
{
// Set the new Abilities
AbilityOne = new Ability(3, Smash()); // pass in the method as a parameter ??
AbilityTwo = new Ability(7, Shieldblock());
}
private void Smash()
{
// Ability 1
}
private void ShieldBlock()
{
// Ability 2
}
}
我的技能类别
class Ability
{
public Ability(int cooldown, [the ability method here])
{
CoolDown = cooldown;
TheAbility = ? the ability parameter ?
}
public int CoolDown { get; set; }
public void TheAbility(){}
}
所以战士将传递他的两个技能并创建两个能力对象。在游戏中,我可以编写:
CharacterClass selectedClass = new Warrior();
selectedClass.AbilityOne();
这将导致一个冷却时间为3秒的碎片。有没有办法实现这个功能呢?