我有一个函数,我根据谁是发起者来分配变量。
如果角色转向攻击Attack(true)
,功能就是这样
转到此功能
function Attack(bool CharacterAttacking){
var Attacker = Monster;
var Target = Character;
if (CharacterAttacking)
{
Attacker = Character;
Target = Monster;
}
默认选择怪物。
但如果我想切换它以便角色是我if
中的攻击者,那么我就会收到错误
无法将Game.Models.Monster类型隐式转换为Game.Models.Character
如何切换它以使攻击者成为角色并且目标成为怪物?
谢谢
答案 0 :(得分:5)
在这种情况下,您需要实现接口或基类。这允许多个类类型存放在相同的对象类型中,只要它们实现该接口或从基类派生即可。
public interface IFighter
{
void Attack();
void Defend();
}
然后你必须在Character和Monster类中实现这个接口。
public class Monster : IFighter
{
public void Attack()
{
//some attack logic
}
public void Defend()
{
//some defense logic
}
}
public class Character : IFighter
{
public void Attack()
{
//some attack logic
}
public void Defend()
{
//some defense logic
}
}
完成此设置后,您可以将这些属性添加到保存战斗信息的班级中。然后你可以实现你想要的方法。
public class Battle
{
public IFighter Attacker = Monster;
public IFighter Target = Character;
public void Attack(bool characterAttacking)
{
if (characterAttacking)
{
Attacker = Character;
Target = Monster;
}
}
}