본문 바로가기

Unreal Engine 5

언리얼에서 Bind<BindUFunction VS AddDynamic>

언리얼에서 함수를 바인드 하는 방식은 크게 두가지가 있다

 

 

🔹 BindUFunction (UFunction 바인딩)

 

FOnTimelineFloat ProgressFunction;

ProgressFunction.BindUFunction(this, FName("UpdateCameraOffset")); 
AimTimeline->AddInterpFloat(AimCurve, ProgressFunction);

 

이건 내가 조준점을 확대할때, Float 값에 따라서 값이 변하게끔 AimTimeline을 설정해둔 것이다.

 

BindUFunction의 특징으론

 

 

  • BindUFunction은 함수 이름을 문자열(FName)로 전달하여 바인딩.
  • UFunction Reflection 시스템을 이용하여 실행.
  • 런타임에만 바인딩 가능, Compile-Time에는 확인할 수 없음.
  • 빠르게 바인딩 가능하지만, AddDynamic보다 약간의 성능 오버헤드가 있음.
  • Blueprint에서 만든 UFunction과도 연결 가능.

 

이 될수 있겠다.

 

다음으론 ADDDynamic 이다.

 

🔹 AddDynamic (Dynamic Delegate 바인딩)

 

함수 델리게이트를 선언 혹은 선언된 델리게이트를 가지고 Broadcast() 시 선언된 특정 함수에 가서 작동을 같이 하는것이다.

 

 

특징으론

특징:

  • AddDynamic은 Compile-Time에서 함수 주소를 직접 바인딩.
  • 엄격한 타입 체크가 가능하여, 컴파일 시 오류를 잡을 수 있음.
  • Unreal Engine의 UFUNCTION() 매크로가 필요.
  • 바인딩하려는 함수는 반드시 UFUNCTION()이 선언되어 있어야 함.

주의점:

  • UFUNCTION이 아닌 함수는 바인딩 불가능.
  • 블루프린트에서 만든 함수와 연결 불가능.