というクラスがEnemy
あり、複数のタイプの敵が必要です。それぞれEnemy
が異なる動きの振る舞いをします。たとえば、プレーヤーに向かってまっすぐに移動したり、特定の距離を維持したりします。私が知りたいのは、できれば1つのクラスで複数の異なる振る舞いをする最も簡単な方法は何ですか?
私の現在のアイデアは、を使用しswitch
、すべての動作を 1 つのメソッドに含めることです。
public class Enemy
{
public int health;
public int damage;
// etc etc
public void Move(string type)
{
switch(type)
{
case "charge":
chargeMove();
break;
case "maintain":
maintainMove();
break;
}
}
private void chargeMove()
{
//stuff
}
private void maintainMove()
{
//stuff
}
//all the behaviors
}
私が知りたいのは、このようにすべてを 1 つの関数にまとめた方が良いですか、それとも から継承する敵の種類ごとに新しいクラスを作成する方が良いEnemy
ですか? IList
特定の関数を使用するためにキャストを行う必要がなく、すべての敵を に適切に格納できるように、1 つのクラスに保持することをお勧めします。
アドバイスをいただければ幸いです。
編集:すべての応答に感謝します。Alastair によって提案されたインターフェイス メソッドを使用すると思います。