single.php

Unity で継承したクラスの関数を呼び出す方法

Unityの C#スクリプトで継承したクラス内の関数を親クラスからアクセスする手順を備忘録的に投稿します。

Overrideした関数を呼び出す

クラスの継承は、C#で使える非常に便利なクラスです。

Unityでもこんな感じで、クラスの継承が行えます。

using UnityEngine;

public class PrentClass : MonoBehaviour
{
  //親クラス
}

public class ChildClass : PrentClass
{
  //継承したクラス(子クラス)
}

継承しているので、親クラスに描いた関数は、継承した子クラスから呼び出すことが可能です。

using UnityEngine;

public class PrentClass : MonoBehaviour
{
  //親クラス
  void ParentFunction()
  {
    //親クラスの関数
  }
}

public class ChildClass : PrentClass
{
  //継承したクラス(子クラス)
  void ChildFunction()
  {
    ParentFuntion();
  }
}

稀に、親クラスから子クラスの関数を呼び出したい場合があります。

そんな時は、親側にも仮想関数を追加して、継承したクラスで同じ名前の関数をオーバーライドします。

using UnityEngine;

public class PrentClass : MonoBehaviour
{
  //親クラス
  protected virtual void ChildFunction()
  {
    //親クラスの仮想関数
  }

  void Func1()
  {
    ChildFunction();
  }
}

public class ChildClass : PrentClass
{
  //継承したクラス(子クラス)
  protected override void ChildFunction()
  {
    //親クラスの関数をオーバーライドした関数
  }
}

関数のアクセス修飾子は[protected]以外にするとエラーになるので、注意が必要です。

まとめ

今回はUnityの C#スクリプトで継承したクラス内の関数を親クラスからアクセスする手順について書きました。

親クラスから継承したクラスの関数を呼び出すには、自身に仮想関数として処理を記載しない関数を追加して、継承したクラスに同じ名前でオーバーライドした関数を追加することで、子クラス側の処理を呼び出すことが可能です。

UnityのC#スクリプトで継承したクラス内の関数を親クラスからアクセスしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です