我正在使用C#編寫Unity3d遊戲,我們有很多情況需要訪問GameObject
的特定成員(如int health
)。我們這樣做是使用代碼,如:使用接口作爲通用方法的類型參數
GameObject obj;
if(obj.GetComponent<Player>() != null) {
obj.GetComponent<Player>().health--;
}
else if(obj.GetComponent<Robot>() != null) {
obj.GetComponent<Robot>().health--;
}
// more painful code
我想要做的是所有這些類實現一個接口一樣IHealth
,然後做obj.GetComponent<IHealth>().health--;
。這可能嗎?我環顧四周,似乎我不能使用接口作爲類型參數。
工作正常。你試過了嗎? – SLaks
@SLaks否,接口只能有方法或屬性,而不能有字段。 – Servy
您可能需要考慮捕獲您在if塊中使用的結果,以免每個對象類型都調用兩次GetComponent。 –