【Unity】クラスの抽象サンプル

Unityでの抽象クラスの実装についてみていきましょう

基本のコード

Car sportCar = new SportCar();
sportCar.Run();
sportCar.Stop();

abstract public class Car
{
    public virtual void Run()
    {
        Debug.Log("走るよ");
    }

    public void Stop()
    {
        Debug.Log("止まるよ");
    }
}

public class SportsCar : Car
{
    public override void Run()
    {
        Debug.Log("超早く");
        base.Run();
    }
}

Unityでのサンプル

このコードサンプルでは、Carクラスとその派生クラスであるSportsCarクラスを使って、車が「走る」と「止まる」動作をする仕組みをUnityプロジェクトで実装する方法について説明します。ここでの目的は、オブジェクト指向プログラミングの継承と多態性の基本概念を理解し、Unityでの応用を示すことです。

ステップバイステップガイド

新しいC#スクリプトの作成

UnityエディタでCarSportsCarという2つのC#スクリプトを作成します。ここでは、抽象クラスCarとその具象実装であるSportsCarを定義します。

Carスクリプトの編集

まず、Carクラスを以下のように定義します。このクラスをダブルクリックしてコードエディタで開き、以下のコードを追加または編集します。

using UnityEngine;

abstract public class Car
{
    public virtual void Run()
    {
        Debug.Log("走るよ");
    }

    public void Stop()
    {
        Debug.Log("止まるよ");
    }
}

SportsCarスクリプトの編集

次に、SportsCarクラスを定義します。このクラスも開き、以下のように編集します。

using UnityEngine;

public class SportsCar : Car
{
    public override void Run()
    {
        Debug.Log("超早く");
        base.Run(); // 基底クラスのRunメソッドを呼び出す
    }
}

動作テスト用のスクリプトを作成

動作をテストするための新しいスクリプト、例えばTestDriveを作成し、以下のコードを含めます。

using UnityEngine;

public class TestDrive : MonoBehaviour
{
    void Start()
    {
        Car sportCar = new SportsCar();
        sportCar.Run();
        sportCar.Stop();
    }
}

Unityエディタに戻る

Unityエディタに戻り、TestDriveスクリプトをゲームオブジェクトにアタッチします。これにより、Startメソッドがゲームの開始時に自動的に呼び出されます。

プレイしてテスト

Unityエディタのプレイボタンをクリックしてゲームを開始し、コンソールウィンドウでログが期待通りに表示されるかを確認します。「超早く」の後に「走るよ」、そして「止まるよ」と表示されるはずです。

このサンプルでは、抽象クラスを使用して共通のインターフェースを定義し、具象クラスでその実装をオーバーライドすることによって、オブジェクト指向の継承と多態性を示しています。Unityでの応用としては、さまざまな種類のオブジェクトに共通の動作を定義し、その挙動を特定のサブクラスでカスタマイズする際にこのようなアプローチが役立ちます。

Unity

Posted by hidepon