언리얼 엔진 5

언리얼엔진5 C++로 정복하기(7) 델리게이트, 인라인

Voitcon 2024. 2. 19. 18:41

언리얼 엔진에서 델리게이트는 특정 이벤트나 상황이 발생했을때 호출될 함수들의 리스트를 관리한다.

델리게이트는 발생하는 함수들을 등록하여 이벤트 발생 시 등록된 모든 함수를 호출한다.

언리얼엔진에서는 델리게이트를 사용한다면 AddDynamic 함수를 사용하는데 이것은 언리얼 엔진의 멀티캐스트 델리게이트에 함수를 동적으로 바인딩하기 위해 사용되는 매크로이다.

함수를 AddDynamic을 사용하여 델리게이트를 바인딩 할려면 그 함수는 UFUNCITON() 매크로를 사용하여 언리얼 엔진의 리플렉션 시스템에 등록해야한다.

왜냐면 AddDynamic()이 런타임에 함수를 델리게이트에서 바인딩 하기 때문..

 

언리얼로 코딩을 하다보면 가끔 FORCEINLINE 을 함수 선언 앞에 붙일때가 있다.

컴파일러에게 특정 함수를 인라인 함수로 처리하도록 강제하는데, 인라인 함수는 호출 시 그 함수의 코드가 호출 지점에 직접 삽입되어, 함수 호출의 오버헤드를 줄인다.

코드 내용이 적은 작은 함수에서 자주 사용된다.

인라인 함수는 프로그램의 실행속도를 향상시킬수 있는 기법이다. 일반적으로 함수를 호출하면, 실행 흐름이 함수의 코드가 있는 메모리 위치로 점프하고, 함수 실행이 끝난 후 원래 위치로 돌아오는데, 이 과정에서 발생하는 오버헤드는 함수의 크기가 작을수록 상대적으로 크다.

 

인라인 함수는 이러한 호출 오버헤드를 제거하기위해 사용된다. 함수를 인라인으로 선언하면, 컴파일러는 함수 호출을 함수의 코드로 대체하는데 즉 함수를 호출하는 대신 함수의 본문이 호출 지점에 직접 삽입된다.

 

인라인을 남발하지는 말자..