我有一个函数,我根据谁是发起者分配变量.
如果角色转向攻击,功能就是这样 Attack(true)
转到这个功能
function Attack(bool CharacterAttacking){
var Attacker = Monster;
var Target = Character;
if (CharacterAttacking)
{
Attacker = Character;
Target = Monster;
}
Run Code Online (Sandbox Code Playgroud)
怪物是默认选中的.
但如果我想切换它以使角色成为我的攻击者if,那么我就会得到错误
无法将Game.Models.Monster类型隐式转换为Game.Models.Character
如何切换它以使攻击者成为角色并且目标成为怪物?
谢谢
在这种情况下,您需要实现接口或基类.这允许多个类类型存放在相同的对象类型中,只要它们实现该接口或从基类派生即可.
public interface IFighter
{
void Attack();
void Defend();
}
Run Code Online (Sandbox Code Playgroud)
然后,您必须在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
}
}
Run Code Online (Sandbox Code Playgroud)
完成此设置后,您可以将这些属性添加到保存战斗信息的班级中.然后,您可以实现您尝试的方法.
public class Battle
{
public IFighter Attacker = Monster;
public IFighter Target = Character;
public void Attack(bool characterAttacking)
{
if (characterAttacking)
{
Attacker = Character;
Target = Monster;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |