UE5 리펙토링 ( function , Event , macro )

박기덕·2025년 7월 3일

상황 ) Meta Sample 에 있는 Grab 기능을 가져다가 적용중이었다.
원본에는 한쪽 손에서만 작성되어 있어서 양손 다 적용시키려고 하는데
로직은 공통 로직을 쓰고 싶었다.

1 ) call by reference

( Left , Right) Candidata 를 ( Left , Right ) Grab Object 로 셋해야 한다.

처음에 Right 인지 파라메타로 받아서 if Right 라면 Right Grab Object 보통 이렇게 했었는데 옆에 보면 Grab Object 로 뭔가 해야 했다.
이걸 원할하게 하기 위해 함수 하나 만들어서 리턴으로 Right , Left Grab Objet 를 받았는데
많은 곳에서 Get 을 하게 되서 코드가 더럽..

파라메타에 따라 Left , Right 간단하게 코드 가능.. ( Get 이 없어졌으니.. )

2 ) Function vs Event

개발적으로는 별 문제 없으면 function 을 주로 사용한다.
Event 를 쓸 때는 delay 나 timeline 같은 경우 사용한다.

문제가 발생한 점
1) 컨트롤러 버튼을 눌렀을 때 로직을 처리 하고 timeline 을 통해서 setActorlocation 을 사용한 애니 사용

2) 왼쪽 , 오른쪽 같은 로직을 사용.
구현해야할 로직에 timeline 이 있어서 파타미터로 actor 를 받은 후에 timeline 이 update 될때 마다 actor 를 이동시키는 로직

상황 1 )
왼손 , 오른쪽 거의 동시에 눌르면 둘 다 맞게 동작
상황 2 )
오른손 , 왼손을 거의 동시에 누르면 오른손을 눌러도 계속 왼손이 update

이런 이벤트를 왼손 , 오른손 번갈아 가면서 빨리 실행하면 어떻게 될까?

결론 )
이벤트가 중간 진행되고 있을때 이 이벤트가 또 호출 됐을 경우
중간 이후 무시되고 처음부터 다시 실행
함수하다가 timeline , delay 있어야 하면 그냥 event 로 바꿨는데
한번 쯤 이부분 고민해봐야 할듯하다.

3) Function vs Macro


이 부분을 함수로 만들었는데
함수들을 나눠 났는데 첫번째에 valid 라면 2,3번째가 실행되면 안되는 것이었는데..
isvaild 일때 아에 실행이 다음으로 안 넘어가야 하는데 Return 때문에 계속 실행되는 버그 발생

매크로로 만들었더니 call by reference 는 되지 않지만 라인을 만들수 있었다.

profile
언리얼 개발자

0개의 댓글