해결된 질문
작성
·
525
·
수정됨
1
CreatureController cc = go.GetComponent<CreatureController>();
if (cc != null)
cc.OnDamaged();
//go는 MonsterController를 가지고 있음
에서 CreatureController를 상속박은 MonsterController의 오버라이드한 함수가 실행되는데
CreatureController cc = go.GetComponent<CreatureController>();
는
CreatureController cc = new MonsterController;
와 같은 기능이기 때문에 그런걸까요?(UNITY GetComponent의 기능인가?)
만약 그렇다면 분명 GetComponent로 CreatureController를 불렀는데 어떻게 MonsterController가 리턴되었는지도 궁금합니다 GetComponent의 UNITY 내부 엔진 기능인가요?
답변 1
1
MonsterController가 CreatureController를 상속 받고 있기 때문이 맞습니다.
GetComponent<T>는 정확히 T를 일치하는 애만 찾는게 아니라,
T를 상속받은 다른 클래스도 찾아줍니다.
CreatureControler cc = new MonsterController() 처럼
new로 만들진 않겠지만 (MonoBehavior는 무조건 AddComponent로 만들어야 합니다)
개념적으로는 비슷합니다.
감사합니다.