【継承とは】基底クラス(Virtual Class)の使い方

親クラスと子クラス

 継承に関して 

スライムやドラゴン、ゴブリンなどの複数のモンスターがいる場合。共通の変数、関数で修正があるとスクリプトを一つ一つ直さなければいけない。
そこでモンスターという「親クラス」を作成し、そこからスライム、ドラゴンの「子クラス」を作成するとまとめて修正できる。

親クラスMonsterを作成し、MonoBehaviourを継承させる。
子クラスはMonsterを継承させる。MonoBehaviourは親のMonsterで継承されているため子にも受け継がれる。


アクセス修飾子をprotectedにすることで、子クラスでそのまま使用できる。
protectedにするとこのクラスを継承した子クラスでのみアクセスできる。pubulicでも動くが他のクラスからアクセスできてしまう。
こうすると子クラスで同じ関数や変数を宣言する必要がなくなる。

Start関数の再定義
Start関数を親クラスで定義し、子クラスでも定義した場合はエラーが起きる。

この場合 親のアクセス修飾子の横に「virtual」を付け、子は「override」を付ける。
こうすると親と子どちらのStartも呼ばれる。
①親
変更前: protected void Start()
変更後: protected virtual void Start()

②子
変更前:protected void Start()
変更後:protected override void Start()

※「new」を付けることで親クラスのStart関数を無視することもできる。
protected new void Start()

実行順の指定
親クラスのStart関数 >> 子クラスのStart関数 としたいときは、
子のStart関数にbase.Start();を付けると親から実行される。

Follow me!