クラス
完成形
int A = Random.Range(1, 4);
if (A == 1) 敵キャラ 敵 = new スライム();
if (A == 2) 敵キャラ 敵 = new ゴブリン();
if (A == 3) 敵キャラ 敵 = new ゴーレム();
Debug.Log(敵.HP);
敵.攻撃();
どの敵でも HP や 攻撃() が使えるようになります。
敵というクラスの入れ物にスライムの中身を入れる。
継承したものの中身しか入れられない。
共通の親クラス
public class 敵キャラ
{
public int HP;
public int 攻撃力;
public virtual void 攻撃()
{
Debug.Log("敵が攻撃した!");
}
}
各クラスが親クラスを継承
public class スライム : 敵キャラ
{
public スライム()
{
HP = 10;
攻撃力 = 3;
}
public override void 攻撃()
{
Debug.Log("スライムの体当たり! ダメージ:" + 攻撃力);
}
}
public class ゴブリン : 敵キャラ
{
public ゴブリン()
{
HP = 20;
攻撃力 = 5;
}
public override void 攻撃()
{
Debug.Log("ゴブリンの斬りつけ! ダメージ:" + 攻撃力);
}
}
public class ゴーレム : 敵キャラ
{
public ゴーレム()
{
HP = 50;
攻撃力 = 10;
}
public override void 攻撃()
{
Debug.Log("ゴーレムのパンチ! ダメージ:" + 攻撃力);
}
}
説明
virtual:親クラス「このメソッドは上書きしていいよ」
override:子クラス「じゃあ上書きします」
クラスの中に直接 変数を書くことはできない。public スライム()のようなクラスと同じ名前のコンストラクターにいれる

