繁体   English   中英

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

[英]C#, Unity: How Can I use different class objects for the same constructor?

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

public CombatVsMonster (Character character, Monster monster)

这就是我所拥有的(带着角色和怪物并进行战斗)

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

public CombatVsMonster (Character character, Character character)

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

有很多方法可以解决此问题,但是大多数游戏(包括任何一种“ Monster ”)共享的共同点是,玩家,怪物等都具有某些共同点,例如HitPoints。

如果您的情况也是如此,那么使用继承可能是实现所需目标的最简单方法。 Character ”应该具有所有Character的通用属性,无论是NPC还是玩家。 从那里,如果PlayerMonster都继承自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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM