1

と呼ばれる基本クラスとPowerup、2 つの子孫クラスがBombありRepelます。

オブジェクト型をパラメーターとして渡す場所で呼び出す必要があるメソッドがあります。

public void PowerupExpired<T>() where T : Powerup {
    //do stuff here
}

基本クラスPowerupから子クラスの型を取得してメソッドに渡す方法はありますか? ジェネリック型は使えません。メソッドに渡す型は型でなければなりませんPowerup

現在、私は以下Powerupを使用してクラスを回避しています。

if (this is BombPowerup)
   PowerupManager.PowerupExpired<BombPowerup>();
else if (this is RepelPowerup)
   PowerupManager.PowerupExpired<RepelPowerup>();
//etc etc

これはきれいでも拡張可能でもありませんが。

編集:

追加するのを忘れていました。ジェネリック型を使用できない理由は、ジェネリック型を受け入れないGetComponent<T>()パラメーター型パス スルーを使用して Unity メソッドを使用するためです。PowerupExpired

4

3 に答える 3