[Unreal] AnimNotify 애님 노티파이 시스템.

이전 언리얼에 이어서, Notify에 관련된 얘기를 조금 하겠습니다.
AnimNotify, 일종의 콜백으로 해당 함수를 특정 타이밍에 연결하여 호출할 수 있도록 하는 일종의 델리게이트(대리자) 라고 보시면 됩니다. 적어도 언리얼 내부에선 이렇게 얘기해요.

언리얼은 애니메이션, 혹은 몽타주에서도 이런 콜백을 지원하고 있습니다. 그래서 AnimNotify죠.



주로는 애니메이션 몽타주 쪽에서 사용하는걸로 알고있지만, 개별 행위에 스테이트를 넣을땐 애니메이션 시퀸스 등에 직접 넣을 수 있습니다. 애니메이션 시퀸스에서 넣는걸로 해보죠.





 애니메이션 시퀸스 입니다. 에셋 브라우저에서 선택한 상태로 있습니다. 여기서 몽타주나 블렌드 스페이스 등 다른 항목을 조절할 수 도 있습니다만, 애니메이션 시퀸스를 더블 클릭하면 기본으로 나오는 창이니 이걸로 해보겠습니다.




아래쪽에 노티파이 라는 부분이 있는데, 이 부분이 AnimNotify를 직접 입력할 수 있는 위치입니다. 원하는 애니메이션 위치에서 오른쪽 클릭을 사용하면 위와 같이 노티파이 추가를 할 수 있는 창이 뜹니다.




이곳에서 노티파이 추가 항목을 자세히 보면 각종 노티파이를 넣을 수 있도록 되있습니다. 맨 위가 커스텀 애님노티파이, 중간이 네이티브 노티파이(언리얼 엔진이 기본으로 가지고 있습니다.), 그리고 아래에 노티파이 추가가 있습니다.




아래에는 노티파이 스테이트 추가가 있는데, 노티파이 스테이트는 일정 시간동안 지속적으로 해당 행위를 할 수 있도록 만들어진 노티파이입니다.









 앞의 그림이 노티파이, 뒤의 그림이 노티파이 스테이트입니다. 조금 다르게 생겼죠.




애니메이션 프리뷰에서 해당 노티가 지나갈 때마다 노티에 등록한 함수들을 실행시킬 수 있게 되어있습니다.

이제, 새 노티파이를 추가했을때 해당 파일을 찾아가보죠.



익숙하게 보이는 블루프린트 클래스 생성에서 AnimNotify를 찾아서 부모로 두고 생성합니다



 애님 노티파이는 구조가 단순합니다. 내부에 오버라이딩이 가능한 Received_Notify 함수가 달랑 하나 있습니다. 이 함수가 노티파이를 줄때마다 Received_Notify를 실행시키는 구조로 되어있어서, 아까 보신바와 같이 터지는 이펙트를 넣어 터지는 효과를 줄 수 있었죠.



 반면에, 애님 노티파이 스테이트는 조금 더 다릅니다. 노티파이 시작(Received_NotifyBegin), 노티파이의 끝(Received_NotifyEnd), 그리고 노티파이의 프레임마다(Received_NotifyEnd) 로 나뉘어져서 사용하게 되죠.



이처럼 언리얼의 애니메이션 시스템에 관련된 내용은 매우 방대합니다. 세세한것 하나하나전부 설정할 수 있기에, 전부 만들어야 되는거죠,

가능하면 애니메이션 관련 기능에 대해서 이것저것 더 알아봐야될것 같습니다. 원래 하려고 하던 기능을 찾으려면 이 부분을 계속 파야되고, 앞으로의 개발도 더 쉬워질테니까요.

참고자료

언리얼 애님 노티파이 문서

댓글

이 블로그의 인기 게시물

[Unity2018.3.0f2] 코루틴 - 유니티에서 While문 멈추지 않고 돌리기.

[Unreal 4.20] 애니메이션 블루프린트에 캐릭터 가져오기.