UFUNCTION()
이전 UPROPERTY()는 C++의 변수를 블루프린트와 연동하는 내용이였으면 이번엔 함수에 대해 포스팅을 합니다.
Category나 Meta키워드는 UPROPERTY와 중복되는 내용이니 이전 포스팅을 참고해 주시길 바랍니다.
BlueprintCallable
가장 기본적으로 C++에서 작성한 함수를 블루프린트에서 사용할 수 있게 하는 BlueprintCallable키워드 입니다,
간단한 기능이라서 블루프린트 내에서 따로 재정의 할 수 없습니다.
BlueprintPure
매우 간단하게 값 하나 반환하는 형태에 사용하는 BlueprintPure키워드입니다.
인자값을 추가로 넣는 것도 가능합니다.
UPARAM 메크로 - 레퍼런스를 인자로 받고 싶을때
인자값으로 레퍼런스 주소를 입력하고 싶어서 위 처럼 코드를 작성했으나 우측 처럼 레퍼런스 변수가 반환값으로 설정 되어 있습니다.
정확한 원인은 모르겠으나 UPARAM메크로를 사용해야 해결이 가능합니다.
레퍼런스 인자값 앞에 UPARAM(ref) 메크로를 붙임으로서 의도한대로 블루프린트에서 인자값을 받을 수 있게 되었습니다.
UPARAM의 정확한 기능은 모르겠지만 또 다른 사용 용도가 있습니다.
인자값에 DisplayName기능을 사용 할 수 있습니다.
BlueprintImplementableEvent
이전에 BlueprintCallable은 블루프린트가 C++ 함수를 호출하는 형태면 BlueprintImplementableEvent 는 C++이 블루프린트 함수를 호출하는 형태 입니다, 다만 C++에서 블루프린트에서 사용할 함수 원형을 작성해야 합니다.
위 처럼 코드를 작성하면 블루프린트에서 해당 함수를 사용 할 수 있으며
블루프린트에서 위 처럼 함수의 기능을 작성하고
C++코드에서 해당 함수를 호출하면 위 처럼 동작을 하게 됩니다.
블루프린트 Custom 함수 호출하기
BlueprintImplementableEvent 는 C++에서 함수 원형을 만들어서 호출하는 방식이 였고 이번엔 블루프린트에서 자체적으로 만든 Custom Event 함수를 C++에서 호출해 보겠습니다.
결과가 잘 나옵니다.
인자값을 넣고 싶으면 위와 같이 FString::Printf함수를 이용해 "함수 이름 %d" 형식으로 구현할 수 있습니다.
BlueprintNativeEvent
BlueprintImplementableEvent 와 비슷하게 C++에서 함수 원형을 만드는 것은 동일하지만 BlueprintNativeEvent는 C++에서 가상함수를 만드는 개념입니다.
그래서 "void CallNativeFuction"이라는 함수를 만들고 C++에서 가상함수로 "void CallNativeFuction_Implementation()"함수를 추가로 만들었습니다.
부모 함수 호출하는 방법은 이벤트 노드에 우측마우스 클릭해서 위 메뉴로 생성할 수 있습니다.
'게임엔진(GameEngine) > Unreal4' 카테고리의 다른 글
What does Get Player Controller (Player index = 0) return in multiplayer? (0) | 2022.07.27 |
---|---|
UE4 Get IP Adress C++ (0) | 2022.07.22 |
블루프린트에서의 멀티플레이어 (0) | 2022.07.13 |
UE5 특징 (0) | 2022.06.16 |
lambda with timers (1) | 2022.04.24 |