NavObjectまたはGameObjectを受け入れるためにオーバーロードされるFollowForce()とAvoidForce()の2つのメソッドがあります。両方の型を受け入れるためにFollow()関数を単純化する方法はありますか?オーバーロードされたメソッドの汎用関数
public void Follow(NavObject target){
if(isFollowing){Body.AddForce(FollowForce(target));}
if(isAvoiding){Body.AddForce(AvoidForce(target));}
}
public void Follow(GameObject target){
if(isFollowing){Body.AddForce(FollowForce(target));}
if(isAvoiding){Body.AddForce(AvoidForce(target));}
}
私は次のことを試してみましたが、cannot convert 'T' expression to type 'NavObject'
を得た:
public void Follow <T>(T target){
if(isFollowing){Body.AddForce(FollowForce(target));}
if(isAvoiding){Body.AddForce(AvoidForce(target));}
}
ほとんどの場合、 'NavObject'オブジェクトと' GameObject'オブジェクトがどのように見えるか、また 'FollowForce'メソッドと' AvoidForce'メソッドを見る必要があります。 – krillgar
同じ基本クラスから継承するには 'NavObject'と' GameObject'が必要です( 'FollowForce()'と 'AvoidForce()'は基底クラスの型のパラメータを受け入れるべきです)。あるいは、同じインタフェースを実装するために 'NavObject'と' GameObject'が必要です( 'FollowForce()'と 'AvoidForce()'はインタフェースの型のパラメータを受け入れるべきです)。 – user1304444
あなたの質問にFollowForceとAvoidForceを編集として表示する必要があります。あなたが望むものは可能かもしれませんが、それらの方法が何をするかによって異なります。つまり、私はオーバーロードされたバージョンに固執します。 –