FindComponentByClass 의 위험성
공부/Unreal42017. 4. 14. 17:44
어느 액터(그외 하위 클래스)가 가지고 있는 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함수로 가져오게 하였다.
엔진에서 제공해주는 함수라도 다시 알아보고 사용하자.
확실히 어떤 기능인지 알아보지 않고 사용하면
실수하는 건 자신이라는 걸 생각하자.
'공부 > Unreal4' 카테고리의 다른 글
언리얼4 c++프로그래밍 - 키맵핑(바인딩) 설정 (0) | 2017.04.17 |
---|---|
언리얼 c++프로그래밍 - Controller의 Possess()함수에 대해 (0) | 2017.04.17 |
언리얼 c++에서 스폰된 액터 클래스 명으로 찾기 (0) | 2017.04.05 |
마이그레이션 중.. #include<Windows.h>문제와 wchar_t to std::string 한글 문제 (0) | 2017.04.05 |
마이그레이션 중.. 싱글톤 설정 (0) | 2017.03.31 |