簡體   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