我有兩種方法,FollowForce()和AvoidForce(),它們被重載以接受NavObject或GameObject。有沒有簡化Follow()函數來接受這兩種類型的方法?c#重載方法的通用函數
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作爲編輯。你想要的可能是可能的,但這取決於這些方法的作用。這就是說,我只是堅持重載版本。 –