본문 바로가기

언리얼엔진

18. Notify(노티파이)

BP_Weapon 클래스에서 특정 State에 대한 특정 Index의 MontageParameter를 받아올 수 있는 Get StateMontage 함수를 만들었다. 외부의 값을 변경하지않고 입력받아서 반환만 하는 역할이라 퓨어로 지정했다.

Get State Montage 함수

 

BP_Character에서 현재 어떤 무기를 끼고 있는지 확인할 변수 WeaponNow(BP_Weapon type)를 만들었다.

그래서 WeaponNow가 none값인지 아닌지에 따라서 나올 애니메이션이 달라지도록 했다.


애니메이션 몽타주 Notify

Notify핀

- Notify : '알리다'라는 뜻으로, 애니메이션 재생 중에 특정 지정에서 알림을 보낼 수 있는 기능이다.

여기서 여러가지 Notify를 만들 수 있다. 스켈레톤 노티파이, 애니메이션 노티파이, 몽타주 노티파이 3개를 알아보자.


스켈레톤 노티파이(Skeleton Notify)

애니메이션 몽타주 화면의 노티파이 트랙에서 우클릭을 통해 노티파이 추가가능

Draw_Montage에서 노티파이 트랙 우클릭하여 노티파이를 추가할 수 있다. 스켈레톤 노티파이로 만들어진다.

따라서 해당 지점에 노티파이를 두고 애니메이션 몽타주를 재생하면 그 부분에서 알림을 보낸다.

 

Montage에서 보낸 노티파이 알림은 애니메이션 블루프린트 이벤트그래프에서 받을 수 있다.

우클릭을 통해 notify_(notify name)을 검색하면 이벤트 노드를 추가할 수 있다.

애니메이션 블루프린트에서 notify 이벤트 노드를 추가하여 받을 수 있다.

 

즉, 해당 애니메이션 블루프린트를 사용하는 대상이 애니메이션 재생 중에 notify 발생 시 처리할 수 있다.

하지만 이 스켈레톤 노티파이를 사용 시 조건사항이 있다.

1. 해당 애니메이션 블루프린트를 사용하는 대상만 노티파이를 받을 수 있다.

2. 사용할 Skeleton 노티파이가 배치되어 있어야 한다.

3. 두 애니메이션에 같은 Skeleton을 사용해야만 한다.

 

따라서 게임에 등장하는 모든 캐릭터가 같은 스켈레톤을 쓴다면 문제없다.

 

해당 스켈레톤에 들어가면 그 스켈레톤이 어떤 애니메이션 노티파이를 가지고 있는지 볼 수 있다.


애니메이션 노티파이(AnimNotify)

스켈레톤 노티파이의 한계는 같은 대상만 사용할 수 있다는 문제가 있다.

그래서 이번엔 애니메이션 노티파이를 알아보자. 스켈레톤과는 다르게 애니메이션에 묶여있는 노티파이이다.

따라서 아무런 관계없이 어떤 애니메이션에서던지 사용이 가능하다.

 

콘텐츠브라우저에서 새 블루프린트 클래스를 추가한다. 부모 클래스 선택 창에서 AnimNotify를 선택해준다.

AnimNotify를 선택

 

이렇게 추가한 애니메이션 노티파이도 Montage에서 직접 선택하여 만들어 줄 수 있다.

 

방금 만들었던 AnimNotify 내부에서는 노티파이의 색상을 바꿔줄 수 있다.

또한 오버라이드 가능한 함수 GetNotifyName과 Received_Notify 두 개가 존재한다.

- GetNotifyName : Montage 트랙에서 해당 노티파이의 이름을 설정해줄 수 있다.

- Received_Notify : Montage에서 해당 노티파이 호출 시 받아오는 함수이다.

                               어떤 Mesh Component에서 어떤 Animation을 수행하는 것인지 입력을 받아줘야 한다.

 

하지만 직접적인 컨트롤은 할 수 없고, 인터페이스로 간접적으로 해야하는 문제도 있다.


몽타주 노티파이(Montage Notify)

우리가 만든 몽타주 재생(Play Montage) 노드에서 노티파이 핀을 사용하기 위해선 따로 몽타주 노티파이를 사용해야한다.

마찬가지로 Montage에서 노티파이 트랙 우클릭하여 보이는 Montage Notify를 선택해서 만들어줄 수 있다.

 

몽타주 노티파이는 애니메이션 몽타주 화면 내에서 이름과 색상을 바꿔줄 수 있다.

- Notify Trigger Chance : 지정한 노티파이에 닿았을 때, 지정한 확률에 맞게 Trigger한다.

                                        (1.0이 100% 확률로 Trigger를 뜻한다)

Montage Notify

 

애니메이션 몽타주에만 배치가 가능하다.