게임 엔진/Unreal

[Unreal/C++] 런타임에서 몽타주에 노티파이 추가하는 방법

niamdank 2024. 1. 25. 17:20

애니메이션 몽타주 로드 시 다음 코드 실행하면 된다.

_pAnimAsset = 대충 애니메이션 로드하는 함수.
UAnimMontage* pAnimMtg = Cast<UAnimMontage>(_pAnimAsset);
if (pAnimMtg == nullptr)
{
  return;
}

// 노티파이 추가
int newIndex = pAnimMtg->Notifies.Add(FAnimNotifyEvent());
FAnimNotifyEvent& newEvent = pAnimMtg->Notifies[newIndex];
if (UObject* AnimNotifyClass = NewObject<UObject>(pAnimMtg,
    UCustomNotify::StaticClass(), NAME_None, EObjectFlags::RF_Transactional))
{
  if (newEvent.Notify = Cast<UAnimNotify>(AnimNotifyClass))
  {
   newEvent.NotifyName = *newEvent.Notify->GetNotifyName();
  }
  newEvent.Link(pAnimMtg, 0.001f); // 0이면 동작 안 하므로 0보다 큰 값이어야 함.
}​

 

 

참고문헌