[英]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還是玩家。 從那里,如果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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.