Unreal UFUNCTION

Unreal Engine에서 UFUNCTION은 C++ 함수에 메타데이터를 추가하여 이 함수를 엔진의 여러 시스템(예: 블루프린트, 리플렉션 시스템, 네트워크 복제 등)에서 사용할 수 있게 하는 데 사용됩니다. UFUNCTION은 Unreal Engine의 리플렉션 시스템에서 중요한 역할을 하며, 함수의 동작을 제어하는 다양한 플래그와 함께 사용할 수 있습니다.

UFUNCTION 기본 사용법

UFUNCTION([Modifiers])
ReturnType FunctionName(Parameters);

여기서 [Modifiers]UFUNCTION에 추가할 수 있는 메타데이터 플래그입니다. 이 플래그는 함수가 어떻게 작동할지, 어디서 사용될지를 지정합니다.

UFUNCTION 주요 Modifiers

  1. BlueprintCallable:
  • 이 함수는 블루프린트에서 호출할 수 있습니다.
  • 예시:
    cpp UFUNCTION(BlueprintCallable, Category="MyCategory") void MyFunction();
  1. BlueprintImplementableEvent:
  • C++에서 구현하지 않고, 블루프린트에서 구현할 수 있는 함수를 정의합니다. C++에서는 함수의 본문이 없습니다.
  • 예시:
    cpp UFUNCTION(BlueprintImplementableEvent, Category="MyCategory") void MyBlueprintEvent();
  1. BlueprintNativeEvent:
  • C++에서 기본 구현을 제공할 수 있지만, 블루프린트에서도 재정의할 수 있는 함수를 정의합니다.
  • 예시:
    cpp UFUNCTION(BlueprintNativeEvent, Category="MyCategory") void MyNativeEvent(); virtual void MyNativeEvent_Implementation();
  1. BlueprintPure:
  • 이 함수는 상태를 변경하지 않는다는 것을 나타냅니다. 즉, 함수는 게임 상태를 변경하지 않고 값을 반환하기만 합니다.
  • 예시:
    cpp UFUNCTION(BlueprintPure, Category="MyCategory") int32 GetHealth() const;
  1. Server, Client, NetMulticast:
  • 네트워크 복제를 위해 사용됩니다. Server는 서버에서만 호출될 수 있고, Client는 클라이언트에서만 호출됩니다. NetMulticast는 서버에서 호출되어 모든 클라이언트로 복제됩니다.
  • 예시:
    cpp UFUNCTION(Server, Reliable, WithValidation) void ServerFunction();
  1. Exec:
  • 이 함수는 게임 콘솔에서 호출할 수 있는 콘솔 명령어를 정의합니다.
  • 예시:
    cpp UFUNCTION(Exec) void MyConsoleCommand();
  1. Reliable/Unreliable:
  • 네트워크 함수 호출의 신뢰성을 나타냅니다. Reliable은 네트워크에서 손실되지 않음을 보장하고, Unreliable은 그렇지 않습니다.
  • 예시:
    cpp UFUNCTION(Client, Reliable) void MyClientFunction();
  1. Category:
  • 블루프린트 노드의 카테고리를 지정하여 정리합니다.
  • 예시:
    cpp UFUNCTION(BlueprintCallable, Category="Gameplay") void PerformAction();

UFUNCTION의 다양한 예제

  1. 블루프린트에서 호출 가능한 함수:
   UFUNCTION(BlueprintCallable, Category="MyCategory")
   void MyBlueprintCallableFunction();

이 함수는 블루프린트에서 호출할 수 있으며, 블루프린트 노드로 MyCategory 아래에 나타납니다.

  1. 블루프린트에서 구현하는 이벤트:
   UFUNCTION(BlueprintImplementableEvent, Category="MyCategory")
   void MyEvent();

이 함수는 C++에서 구현하지 않지만, 블루프린트에서 구현하여 이벤트를 처리할 수 있습니다.

  1. 블루프린트에서 재정의할 수 있는 함수:
   UFUNCTION(BlueprintNativeEvent, Category="MyCategory")
   void MyNativeEvent();
   virtual void MyNativeEvent_Implementation();

MyNativeEvent는 C++에서 기본 구현을 제공할 수 있으며, 블루프린트에서 이 기본 구현을 재정의할 수 있습니다.

  1. 서버에서만 호출되는 함수:
   UFUNCTION(Server, Reliable, WithValidation)
   void MyServerFunction();

이 함수는 서버에서만 호출될 수 있으며, 신뢰성이 보장됩니다. WithValidation은 서버에서 호출하기 전에 추가 검사를 수행하는 데 사용됩니다.

  1. 콘솔 명령어 함수:
   UFUNCTION(Exec)
   void MyExecFunction();

이 함수는 게임의 콘솔에서 호출할 수 있습니다.

요약

UFUNCTION은 Unreal Engine에서 함수에 메타데이터를 추가하여 블루프린트, 네트워크 복제, 콘솔 명령어 등 다양한 기능을 지원할 수 있게 하는 중요한 매크로입니다. 이를 통해 개발자는 C++과 블루프린트 간의 상호 작용을 보다 쉽게 관리할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *