C#、Unity:如何为同一构造函数使用不同的 class 对象?
C#, Unity: How Can I use different class objects for the same constructor?
我正在用unity写一个简单的游戏,想构建一个战斗函数
public CombatVsMonster (Character character, Monster monster)
这就是我所拥有的(带上角色和怪物并进行战斗)
如何使用相同的代码(合并这两个,因此第二个构造函数可以是 Monster 或 Character class)
public CombatVsMonster (Character character, Character character)
换句话说:我可以拥有一个能够接收不同 class 对象的构造函数吗?如果是:如何?
有很多方法可以解决这个问题,但大多数包含任何类型“Monster
”的游戏都有一个共同点,那就是玩家、怪物等都有一些共同点,例如命中率。
如果您的情况也是如此,那么使用 inheritance 可能是实现您想要的目标的最简单方法。 “Character
”应该具有所有 Character
的共同点,无论是 NPC 还是玩家。从那里开始,如果 Player
和 Monster
都继承自 Character
,那么您可以将它们都传递给接受 Character
作为参数的任何函数。这应该会为您节省大量代码,因为它允许一个函数处理 Character
之间的交互。它们都将具有 Character
的所有功能,但也将具有自己的属性。
您需要创建一个将继承给其子项的接口。
class Character : MonoBehavior, IActor
{
public float Hp {get;set;}
private float _damage;
public float Damage
{
get {return _damage;}
set {_damage = value;}
}
//implemetation of IActor
}
class Monster : MonoBehavior, IActor
{
//implemetation of IActor
}
interface IActor
{
float Hp {get;set;}
float Damage {get;set;}
}
public Combat (IActor character, IActor character2)
我正在用unity写一个简单的游戏,想构建一个战斗函数
public CombatVsMonster (Character character, Monster monster)
这就是我所拥有的(带上角色和怪物并进行战斗)
如何使用相同的代码(合并这两个,因此第二个构造函数可以是 Monster 或 Character class)
public CombatVsMonster (Character character, Character character)
换句话说:我可以拥有一个能够接收不同 class 对象的构造函数吗?如果是:如何?
有很多方法可以解决这个问题,但大多数包含任何类型“Monster
”的游戏都有一个共同点,那就是玩家、怪物等都有一些共同点,例如命中率。
如果您的情况也是如此,那么使用 inheritance 可能是实现您想要的目标的最简单方法。 “Character
”应该具有所有 Character
的共同点,无论是 NPC 还是玩家。从那里开始,如果 Player
和 Monster
都继承自 Character
,那么您可以将它们都传递给接受 Character
作为参数的任何函数。这应该会为您节省大量代码,因为它允许一个函数处理 Character
之间的交互。它们都将具有 Character
的所有功能,但也将具有自己的属性。
您需要创建一个将继承给其子项的接口。
class Character : MonoBehavior, IActor
{
public float Hp {get;set;}
private float _damage;
public float Damage
{
get {return _damage;}
set {_damage = value;}
}
//implemetation of IActor
}
class Monster : MonoBehavior, IActor
{
//implemetation of IActor
}
interface IActor
{
float Hp {get;set;}
float Damage {get;set;}
}
public Combat (IActor character, IActor character2)