【Unity】インナークラス

2023年4月1日

インナークラスを使うことで、外部クラスの内部でのみ使用されるようなヘルパークラスを定義することができます

以下は、Unityでインナークラスを使ったシンプルなサンプルです。

ヘルパークラス(Helper Class)とは、他のクラスや関数などの処理を支援するために用意された、補助的な役割を持つクラスのことです。

ヘルパークラスは、主に以下のような役割を持ちます。

  • 共通的な処理をまとめることで、コードの重複を避けることができる。
  • 複雑な処理をシンプルにすることができる。
  • 再利用性が高く、汎用的な処理を行うことができる。

例えば、文字列の操作や日付の処理など、一定の処理をまとめたヘルパークラスを定義することがあります。これにより、同じ処理を複数の場所で行う必要がある場合でも、ヘルパークラスのメソッドを呼び出すだけで済むようになります。

また、外部クラスに密接に関連した処理を行う場合には、インナークラスとして定義することができます。これにより、外部クラスのプライベートフィールドやメソッドにアクセスすることができ、より簡潔なコードを記述することができます。

using UnityEngine;

public class OuterClass : MonoBehaviour
{
    // Inner class
    private class InnerClass
    {
        public void PrintMessage()
        {
            Debug.Log("Hello from InnerClass!");
        }
    }

    private InnerClass inner;

    private void Start()
    {
        // Instantiate inner class
        inner = new InnerClass();
    }

    private void Update()
    {
        // Call inner class method
        if (Input.GetKeyDown(KeyCode.Space))
        {
            inner.PrintMessage();
        }
    }
}

上記の例では、OuterClassというUnityのコンポーネントを定義し、InnerClassというインナークラスを定義しています。InnerClassにはPrintMessageというメソッドがあり、これは単にデバッグログに文字列を表示するだけのものです。

OuterClassStartメソッドで、InnerClassをインスタンス化しています。そして、Updateメソッドで、スペースキーが押されたときにInnerClassPrintMessageメソッドを呼び出しています。これにより、スペースキーを押すたびに「Hello from InnerClass!」という文字列がログに表示されます。

なお、C#では、インナークラスはpublicprotectedinternalprivateのいずれかのアクセス修飾子で定義することができます