본문 바로가기
UE5 : Paper 2D (Blueprint)/애니메이션 관리

[UE5 : Paper2D(BP) - 애니메이션 관리] Chapter 02. 매크로

by song.ift 2023. 12. 15.

GitHub : https://github.com/developeSHG/UE5-Paper2D/commit/3795f328d6afc44dcf76ac8196f6079419d65b01

 

매크로 · developeSHG/UE5-Paper2D@3795f32

hokyung.song committed Dec 8, 2023

github.com

 

결과물

 

 


 

 

저번 시간에 float 라는 것을 이용해서 양수 음수에 따라 브랜치를 실행할 수 있는 코드를 만들어놨는데, 이것보다 우월한 방법이 있다.

 

Compare Float는알아서 필터링을 해준다.

잘보면 Compare Float 왼쪽에 M이 붙어있다. 이 매크로라는 것이 무엇이냐?

사실 함수랑 굉장히 비슷하지만 내부 동작이 조금 다르다. 

 

함수랑 유사한 것처럼 입력이랑 출력을 늘릴 수 있다. 근데 함수랑 조금 다른 점은 불리언 타입이 아니라 Exec라는 게 하나 있다는 걸 볼 수 있고, 실행핀 자체를 인풋으로 받아줄 수 있다. 출력을 할 때도 마찬가지다.

 

실행 원리는 함수랑 비슷하고, 그렇다면 근본적으로 무엇이 다른지 알아보면.

함수를 만든다는 것은 만약 SetFlipBook이라는 함수를 호출한다라는 것은 코드가 다른 어디가에 만들어져 있기때문에 실행되는 주소가 그 함수로 이동을 해서 실행한 다음, 다시 돌아오게 되는 것으로 생각하면 된다.

반면, 매크로는 사용자가 보기 편하게 하기 위해서 공통된 것들을 묶어놓은 것이지, 결국엔 실제로 매크로를 사용하게 되면 내부에서 넣어노는 코드들이 매크로를 사용하는 쪽에 그저 치환되어 들어간다는 차이가 있다.

그렇기 때문에 매크로를 하나를 만들어놓았다 해도 10군데서 사용하면 10군데에 동일한 코드가 치환되는 형태로 만들어진다 라는 근본적인 차이가 있다.

 

성능적인 문제 차이도 있다.

함수에서는 실행했으면 함수가 실행이 끝날 때까지 일단은 무조건 고를 해야 한다. 중간에 멈췄다거나 2초 쉬었다가 간다거나 이런 부분이 불가능하고, 무조건 끝날 때까지 쭉 실행하게 된다.

반면 매크로는 코드를 그저 복붙하는 개념이다보니 delay라는 기능을 통해 실행을 지연시킬 수 있다든지 기능이 가능하다.  

 

매크로라는 것은 결국 코드를 재사용하는 것에 불과하다. 매크로랑 함수의 가장 큰 차이는 레이턴트 노드를 통해 실행 흐름을 미루는 노드를 배치할 수 있지만, 함수에서는 할 수가 없다. 오히려 그게 장점이 될 수도 있다.

그리고 함수같은 경우엔 블루프린트에서 상속 구조를 만들게 될 경우엔 자식 블루프린트 클래스에서 상속을 받아 오버라이드를 해서 함수를 재정의 할 수 있었는데, 메크로에선 그런 개념이 아니기 때문에 안된다. 

그 외적인 출력핀을 여러 갈래 길로 만들 수 있다든지 하는 부분이 차이도 있지만, 큰 차이는 없다. 

 

기본적으로 함수를 선택하되 경우에 따라 묶어서 코드를 관리하는게 편하다고 하면, 물론 매크로의 코드가 너무 방대하면 안된다는 전제 조건하에 매크로를 사용하면 좋다. (함수는 한 번만 만들어지지만, 매크로가 몇천줄짜리 코드라고 하면 사용하는 곳에서 일일이 다 코드를 복붙하기 때문)

댓글