본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진에서 UFUNCTION 은 어떻게 사용하나요?

by 밝음의기둥 2024. 9. 30.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진에서 UFUNCTION 은 어떻게 사용할 수 있는지 물어봤습니다.


질문 >

언리얼 엔진에서 UFUNCTION 은 어떻게 사용하나요?

답변 >

UFUNCTION은 언리얼 엔진의 C++ 코드에서 함수에 특정 속성(메타데이터)을 부여하기 위해 사용되는 매크로입니다. 이를 통해 함수가 블루프린트, 네트워크 복제, 이벤트 시스템과 같은 언리얼 엔진의 핵심 기능들과 상호작용할 수 있습니다.

UFUNCTION의 기본 구조:

UFUNCTION([Specifier])
반환형 함수명(매개변수);

주요 Specifier(지정자)와 사용 예시:

  1. BlueprintCallable:
    • 이 지정자는 해당 함수를 블루프린트에서 호출할 수 있게 만듭니다. 블루프린트 스크립팅에서 C++ 함수를 호출하여 게임 로직을 확장할 수 있습니다.
    UFUNCTION(BlueprintCallable, Category = "Player")
    void Jump();
    
  2. BlueprintImplementableEvent:
    • 이 지정자는 C++ 함수의 기본적인 구현을 생략하고, 블루프린트에서 함수의 동작을 구현할 수 있게 합니다. 즉, C++에서 함수를 정의하지만, 구체적인 구현은 블루프린트에서 할 수 있습니다.
    UFUNCTION(BlueprintImplementableEvent)
    void OnPlayerDeath();
    
  3. BlueprintNativeEvent:
    • 이 지정자는 C++에서 기본 구현을 제공하면서, 필요에 따라 블루프린트에서 해당 함수를 재정의할 수 있도록 합니다.
    UFUNCTION(BlueprintNativeEvent)
    void TakeDamage(int32 DamageAmount);
    virtual void TakeDamage_Implementation(int32 DamageAmount);
    
  4. NetMulticast:
    • 네트워크 복제와 관련된 지정자로, 서버에서 호출되면 모든 클라이언트로 해당 함수가 복제됩니다. 멀티플레이어 게임에서 서버가 특정 동작을 클라이언트에게 동기화할 때 사용됩니다.
    UFUNCTION(NetMulticast, Reliable)
    void MulticastPlaySound();
    
  5. Server / Client:
    • 서버클라이언트에서만 실행되는 함수를 정의할 때 사용합니다. 서버에서 실행할 함수는 Server, 클라이언트에서 실행할 함수는 Client 지정자를 사용합니다.
    UFUNCTION(Server, Reliable, WithValidation)
    void ServerFireWeapon();
    
    UFUNCTION(Client, Reliable)
    void ClientShowHitMarker();
    
  6. Exec:
    • 이 지정자는 콘솔 명령어로 호출할 수 있는 함수를 정의할 때 사용됩니다. 예를 들어, 게임 내에서 개발자가 콘솔에 명령어를 입력하면 이 함수가 실행됩니다.
    UFUNCTION(Exec)
    void ToggleDebugMode();
    

UFUNCTION의 주요 기능:

  • 블루프린트 통합: UFUNCTION을 사용하면 C++ 함수를 블루프린트에서 사용할 수 있어, 게임 로직을 더욱 유연하게 확장할 수 있습니다.
  • 네트워크 복제: Net 관련 지정자를 사용하여 멀티플레이어 환경에서 서버와 클라이언트 간의 함수 동기화를 쉽게 관리할 수 있습니다.
  • 이벤트 시스템: 이벤트 기반 함수를 통해 특정 상황에 맞춰 동작을 정의하고, 이를 블루프린트나 C++에서 유연하게 구현할 수 있습니다(Puget Systems)(Unreal Engine).

UFUNCTION은 언리얼 엔진의 다양한 시스템과 통합되어 C++ 코드의 기능을 확장하고, 블루프린트나 네트워크 시스템과의 상호작용을 쉽게 할 수 있도록 도와줍니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형