と呼ばれる基本クラスと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