인프런 커뮤니티 질문&답변

Hong Hyeon-Jun님의 프로필 이미지
Hong Hyeon-Jun

작성한 질문수

언리얼 엔진4 입문 (C++ 기반)

델레게이트

UFUNCTION() 은 언제 붙여야 하는 건가요?

작성

·

551

0

이번 강좌에서 8분 쯤

UFUNCTION()

void OnAttackMontageEnded(UAnimMontage* Montage, bool bInterrupted);

함수를 만들었는데, 실수로 UFUNCTION()을 안붙여줬더니 언리얼에서 오류를 뿜고 델리게이트가 정상적으로 되지 않더라구요.

지금까지는 UFUNCTION() 매크로 없이 UpDown, Yaw 같은 함수를 만들었는데, UFUNCTION()이 정확히 언제 붙이고 언제 안붙여도 되는건지 궁금합니다!

답변 1

1

저의 미약한 지식이지만 도움이 되실지 모르겠네요...

C++은 C#과 달리 Reflection이라는 기능이 없습니다..

언리얼에서는 이를 억지로 구현해 놓았구요. 

이 Reflection이라는 기능을 통해서 런타임에 자기 자신을 검사할 수가 있는데 이를 사용하기 위해서는 특수한 매크로를 사용해야 합니다. 

그게 UCLASS, UPROPERTY, UFUNCTION 같은 매크로 이구요.

이렇게 매크로를 사용하게 되면 UnrealHeaderTool(UHT)이  컴파일시점에 정보를 수집해서 추가 코드를 생성 해줍니다. 

 UCLASS 를 사용해서 해당 클래스가 garbage collection을 사용하게 해주고  

UPROPERTY, UFUNCTION이 블루프린트에 노출될수 있게 해주는것으로 알고 있습니다. 

블루프린트 안에서 사용하실려면 ()안에 어떻게 사용할건지 지정도 해주셔야 합니다. 

제가 강의를 본지 좀 오래되서 저게 어떤 상황인지는  모르겠는데 아마 블루프린트 쪽을 건드리고 있지 않을까요??

 

 

Hong Hyeon-Jun님의 프로필 이미지
Hong Hyeon-Jun

작성한 질문수

질문하기