C#,Unity:如何为同一个构造函数使用不同的类对象?

时间:2017-01-04 15:59:47

标签: c# class constructor unity5

我正在编写一个简单的游戏,并希望构建一个战斗功能

public CombatVsMonster (Character character, Monster monster)

这就是我所拥有的(接受角色和怪物并执行战斗)

如何使用相同的代码(合并这两个,所以第二个构造函数可以是Monster或Character类)

public CombatVsMonster (Character character, Character character)

换句话说:我可以拥有一个能够接受不同类对象的构造函数吗?如果是的话:怎么样?

2 个答案:

答案 0 :(得分:1)

有许多方法可以解决这个问题,但大多数游戏共享的共同线程包括任何类型的“Monster”,玩家,怪物等都有一些共同点,比如HitPoints。

如果你的情况也是如此,那么使用inheritance可能是实现你想要的最简单方法。 “Character”应该包含所有Character的共同点,无论是NPC还是播放器。从那里,如果PlayerMonster都从Character继承,那么您可以将它们都传递给任何接受Character作为参数的函数。这应该可以节省大量代码,因为它允许一个函数处理Character之间的交互。它们都具有Character的所有功能,但也有自己的属性和属性。

答案 1 :(得分:1)

您需要创建一个将继承给其子级的接口。

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)