私はC#を使用してUnity3dゲームに取り組んでいますが、の特定のメンバー(たとえばint health
)にアクセスする必要がある状況がたくさんありますGameObject
。これは、次のようなコードを使用して行います。
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--;
。しかし、これは可能ですか?周りを見回しましたが、型パラメーターとしてインターフェースを使用できないようです。