midas+son의 크리에이티브(creative) 이야기

어느 액터(그외 하위 클래스)가 가지고 있는 Component를

검색하기 위해 아래와 같은 코드를 많이 사용한다.

UMyComponent* MyComp = MyActor->FindComponentByClass<UMyComponent>();

하지만 당연히 될 줄 알았던게 안됐을 때의 통수란...많은 시간 낭비를 하게 만든다.(하루를 날렸다.)


다른 컴포넌트에서 Owner가 되는 액터의 내부 컴포넌트를 찾기 위해 사용했었는데

설마 여기서 nullptr이 나올 줄은 몰랐다.


FindComponentByClass에 대해서 찾아보니 설명에 떡하니 이렇게 나와있었다.

Searches components array and returns first encountered component of the specified class.

first encountered...처음 발견된 것만...가져온다...

그래서 상속을 계속 받다보니 할아버지, 증조 할아버지격 부모 클래스에서 

통일한 Component의 이름을 가진게 있었고

그 컴포넌트에는 비어있었기에 문제가 생겼었던 것이다.


이 문제를 해결하기 위해 find보다는 특정 변수에 값을 담아

Get함수로 가져오게 하였다.


엔진에서 제공해주는 함수라도 다시 알아보고 사용하자.

확실히 어떤 기능인지 알아보지 않고 사용하면 

실수하는 건 자신이라는 걸 생각하자.