이벤트 트랙 개요

시퀀서에서 이벤트를 발동하는 Event, 이벤트 트랙에 대한 설명입니다.

Windows
MacOS
Linux

Event Track (이벤트 트랙)은 시네마틱에서 스크립트 기능을 실행할 지점을 지정할 수 있습니다. 시네마틱에서 플레이어가 상자를 열면 수집할 수 있는 아이템을 받게 하고 싶을 수 있습니다. 또는 플레이어를 둘러싸는 파티클 이펙트를 스폰할 수도 있습니다. 어떤 경우든 이벤트 트랙을 사용하면 단일 키 이벤트 또는 매 프레임 반복되는 이벤트 섹션을 발동할 수 있습니다.

여기서는 사용할 수 있는 기능 몇 가지와, 시퀀서의 이벤트 트랙 작동에 묶여있는 내부 시스템을 간략하게 설명합니다.

이벤트 추가

시퀀서 안에 이벤트 트랙 을 추가하려면, + 트랙 버튼을 클릭하고 이벤트 트랙 을 선택하면 됩니다.

AddingAnEventTrack.png

이벤트 트랙을 추가한 후에는 섹션이나 단일 키프레임을 시퀀서의 지정한 프레임에 이벤트로 추가할 수 있습니다.

AddedKeyframeType.png

이벤트를 추가한 이후에는, Director (디렉터) 블루프린트를 사용하여 해당 이벤트에 대한 스크립트 기능을 작성할 수 있습니다.

이벤트 트랙을 만들고 사용하는 법에 대한 단계별 안내는 시퀀서를 통한 이벤트 호출 문서를 참고하세요.

디렉터 블루프린트

Director (디렉터) 블루프린트는 시퀀스를 지정하여 재생을 지시하고 이벤트 트리거에 필요한 바이트 코드를 생성하는 블루프린트 유형을 말합니다 (아래에서 레벨 시퀀스 디렉터 블루프린트를 참고하세요).

이미지를 클릭하면 원본을 확인합니다.

디렉터 블루프린트에서, 지정한 대상(들)에 대해 발생시킬 스크립트 기능을 지정할 수 있습니다. 또한 디렉터 블루프린트로 다른 블루프린트가 구현한 블루프린트 인터페이스 를 호출하도록 하면 호출을 받았을 때 차례로 실행되도록 할 수 있습니다.

지정한 시퀀스 유형에 대한 이벤트를 지원하려면, 이벤트가 디렉터와 상호작용하는 방법을 정의해야 합니다. 이는 시퀀스 유형 별로 등록되는 에디터 전용 Movie Scene Sequence Editor (무비 씬 시퀀스 에디터)를 통해 이루어집니다. 각 시퀀스 유형은 별도의 디렉터 블루프린트 유형을 정의할 수 있습니다.

예:

  • 레벨 시퀀스 이벤트 - 별도의 레벨 시퀀스 디렉터 및 제너레이티드 클래스를 생성합니다.

  • 위젯 애니메이션 이벤트 - 애니메이션을 소유하는 위젯 블루프린트 를 사용합니다. 익스텐션으로 지정한 위젯의 모든 애니메이션은 같은 디렉터(위젯 인스턴스 자체)를 사용합니다.

  • 액터 시퀀스 이벤트 - 소유하는 이벤트, 아니면 액터 시퀀스가 원시 인스턴스드 컴포넌트로 존재하면 레벨 블루프린트를 사용합니다.

4.21 현재 디렉터 블루프린트는 컨트롤 릭 에서 지원되지 않습니다.

서브 시퀀스가 존재하는 경우, 자신의 디렉터 인스턴스를 사용하려 하는 모든 서브 시퀀스에 대해 디렉터 인스턴스가 생성됩니다. 추가적으로, 디렉터 인스턴스는 요청 시 (이벤트 트랙에 의해) 생성되며 콘텐츠 브라우저 에서 액세스할 수 있는 애셋은 아닙니다 (하지만 앞으로 바뀔 수 있습니다).

디렉터 블루프린트는 Event Endpoint (이벤트 엔드포인트) 생성 또는 이벤트 트랙에 정의된 키 또는 섹션에서 액세스할 때 자동으로 열립니다.

이벤트 엔드포인트

Event Endpoint (이벤트 엔드포인트)는 연관된 디렉터 클래스 블루프린트에 액세스를 부여하며, 이벤트 트랙의 리피터 섹션 또는 키에 더블클릭하면 자동 생성됩니다. 리피터 섹션 또는 키에 우클릭하고 컨텍스트 메뉴의 프로퍼티 옵션을 통해 엔드포인트를 새로 만들 수도 있습니다.

CreatingAnEndPoint.png

새로 생성된 엔드포인트는 (인스턴스에 대한 오브젝트 바인딩 유형의) 엔드포인트에 대해 적합한 기본 핀 정의를 시도하지만, 이는 변경 또는 제거 가능합니다.

EndpointOutPin.png

엔드포인트에는 핀이 0 또는 1 개 있을 수 있습니다. 지정된 핀이 없으면 이벤트는 지정된 유효 오브젝트가 있든 없든 항상 발동됩니다 (이벤트 리시버 가 없는 마스터 트랙 에 기본입니다). 하나의 오브젝트 또는 인터페이스 핀이 존재하면, 오브젝트가 올바른 유형이거나 인터페이스를 구현하는 경우 바인딩된 오브젝트마다 이벤트가 한 번씩 발동됩니다. 다른 모든 함수 시그너처는 시퀀서 이벤트와 호환되지 않으며, 발동에 실패합니다.

이벤트 프로퍼티 섹션은 기존 호환 함수로의 바인딩 옵션을 제공하거나, 대상 클래스에서 블루프린트 호출할 수 있는 함수로의 새 엔드포인트를 빠르게 자동 연결하기도 합니다.

EndPointBindings.png

위에서 Existing (기존) 엔드포인트 몇 가지를 Disable HUD 또는 Enable AI 에 바인딩하거나, Quick Binding 을 만들어 스켈레탈 메시의 애님 다이내믹스 리셋과 같은 블루프린트 호출가능 함수에 빠른 바인딩할 수도 있습니다. 이벤트 엔드포인트를 할당한 이후, 이벤트에 더블클릭하거나 프로퍼티 메뉴의 돋보기 아이콘을 클릭하면 그 이벤트 정의를 바로 탐색할 수 있습니다.

엔드포인트 및 인터페이스

디렉터 블루프린트의 엔드포인트를 정의할 때, 블루프린트 인터페이스 를 구현하여 다양한 블루프린트 또는 레벨 블루프린트 와도 통신할 수 있습니다. 아래에서 이벤트 및 엔드포인트를 생성했습니다. 클래스 세팅 옵션을 통해 블루프린트 인터페이스도 구현했습니다.

Interface_01.PNG

샘플 함수에 대한 메시지 호출을 실행하면, 인터페이스를 구현하는 (아래 그림의 레벨 블루프린트 포함) 블루프린트는 연관된 이벤트를 실행합니다.

Interface_02.PNG

위에서, 레벨 블루프린트 가 인터페이스에서 호출을 받아 Print String 을 실행하여, 화면에 텍스트를 출력합니다.

자세한 정보는 블루프린트 인터페이스 문서를 참고하세요.

이벤트 타깃

어떤 대상에서 이벤트를 발동시킬지 정의하는 여러가지 다양한 옵션이 있습니다. 이들 중 일부는 구버전 호환 및 일관성 때문에 계속 지원하고 있습니다. 하나의 이벤트에 여러 타깃을 지정하면, 하나 마다 이벤트가 여러 번 발동됩니다.

각각에 대해 사용가능한 타깃 유형 및 추가 정보는 아래 섹션을 참고하세요.

이벤트 리시버

Event Receiver (이벤트 리시버)는 트랙에서 이벤트를 발동하는 오브젝트 바인딩 목록을 정의할 수 있습니다. 비어있으면, (레벨 블루프린트 또는 위젯과 같은) 재생 환경에 대한 기본 이벤트 컨텍스트에서 이벤트가 발동됩니다.

트랙 창의 이벤트 트랙 에 우클릭하여 표시되는 이벤트 트랙 프로퍼티 메뉴에서 이벤트 리시버 를 할당할 수 있습니다.

EventReciever_RightClick.png

이벤트 리시버+ 부호를 클릭하면 시퀀스 계층구조에서 (심지어 부모나 자손에서도) 오브젝트 바인딩을 지정할 수 있습니다.

AssignedEventReciever.png

위에서 ThirdPersonCharacter 를 오브젝트 바인딩으로 선택했습니다. 이벤트 리시버를 할당했으므로, 이벤트 엔드포인트를 추가하면, 타깃 오브젝트가 무엇이 될지 알 수 있고, 그 오브젝트에서 스크립트를 액세스하거나 실행할 수 있습니다.

ChangeTargetType-1.png

위에서, 타깃 핀 유형을 ThirdPersonCharacter 오브젝트 레퍼런스로 바꿉니다. 이 이벤트가 실행되면, 시퀀서는 내부적으로 형변환 을 하여 오브젝트 유형 일치를 확인하고 실패하면 호출하지 않습니다. 일치하는 경우, 프로퍼티, 컴포넌트에 액세스하거나 그 오브젝트에서 함수나 스크립트를 호출할 수 있습니다.

이벤트 리시버는 트랙 내 모든 이벤트 섹션에 영향을 주며, 바인딩 오버라이드를 따릅니다.

오브젝트 바인딩

시퀀스에 이벤트 트랙을 추가하는 것에 더해, 시퀀스 계층구조의 기존 오브젝트에 이벤트 트랙을 추가할 수 있습니다. 그러면 이벤트 트랙에 대한 오브젝트 바인딩 이 생성되어, 이벤트 엔드포인트의 타깃 오브젝트가 이벤트 트랙이 추가된 오브젝트에 바인딩됩니다.

오브젝트 바인딩은 트랙에 할당된 이벤트 리시버가 없는 경우에만 이벤트 엔드포인트에 바인딩됩니다.

예를 들어, 아래에서 시퀀스에 캐릭터 블루프린트를 추가했습니다. 그런 다음 스켈레탈 메시를 시퀀스에 추가하고, 이어서 애님 블루프린트 인스턴스가 스켈레탈 메시에 할당됩니다. 애님 블루프린트 트랙에 대해, 이벤트 트랙을 추가합니다.

ObjectBinding_01-1.PNG

이벤트에 키프레임을 추가하고 이벤트 엔드포인트를 할당하면, 퀵 바인딩 섹션 아래, 애님 블루프린트에 관련된 함수 호출에 액세스할 수 있습니다.

ObjectBinding_02-1.PNG

퀵 바인딩을 사용하면, 연관된 디렉터 블루프린트가 자동 구성됩니다. 아래는 Reset Dynamics (다이내믹스 리셋) 함수 호출로의 바인딩입니다.

ObjectBinding_03-1.PNG

추가 이벤트 리시버

Additional Event Receivers (추가 이벤트 리시버) 할당은 레벨 시퀀스 액터디테일 패널에서 합니다.

AdditionalEventReceivers.PNG

여기서 레벨 스크립트 액터 이외에 이벤트 컨텍스트를 지정할 수 있으며, 월드에서 사용자 정의 액터 세트를 추가하면 됩니다. 위 이미지에서, 레벨에 존재하는 ThirdPersonCharacter 를 추가했습니다. 그러면 아래처럼 이벤트 호출 시점의 컨텍스트와 이벤트 엔드포인트 정의 시점의 타깃이 나오므로, 여기서 캐릭터에 연관된 메시에게 물리 시뮬레이션 및 콜리전 프로파일 변경을 지시합니다.

SimulateExample.png

이벤트 섹션 유형

이벤트 트랙은 개별 키설정 이벤트는 물론 섹션도 지원합니다.

  • 트리거 섹션 - 저마다 별도의 엔드포인트를 가질 (또는 같은 엔드포인트를 공유할) 수 있는 이벤트 채널을 정의합니다. 이벤트는 평가 도중 탐색할 때 발동됩니다.

  • 리피터 섹션 - 평가될 때마다 매 번 발동되는 단일 이벤트( 및 엔드포인트)를 정의합니다.

이벤트 섹션 추가는 이벤트 트랙에서 섹션 버튼을 클릭하고 원하는 유형을 선택하면 됩니다.

Section_01_update.png

트리거 섹션은 (모든 키와 함께) 섹션을 타임라인에서 보다 쉽게 이동하면서 키 설정된 이벤트 다수를 그룹으로 묶을 때 좋습니다. 아래는 키 프레임이 둘인 트리거 섹션입니다. 트리거 섹션을 잡아 타임라인에서 원하는 위치로 이동하면서, 각 이벤트 사이 프레임 양을 그대로 유지합니다.

TriggerSection_01.PNG

리피터 섹션은 섹션 기간 동안의 모든 프레임에 할당된 이벤트와 엔드포인트를 발동합니다.

RepeaterSection.PNG

위에서, 30 프레임에서 75 프레임까지 Print String Event 라는 리피터 섹션이 있습니다. 이 이벤트는 지정한 프레임 범위 동안 매 프레임 화면에 텍스트를 출력합니다. 리피터 섹션은 시퀀스 지정 기간 동안 매 프레임 이벤트를 발동시킬 경우에 좋습니다.

자주 묻는 질문

아래는 시퀀서에서 이벤트 트랙 작업 시 발생할 수 있는 몇 가지 질문입니다.

  • 레벨 블루프린트에서 이벤트를 어떻게 트리거하나요?

    • 레벨 시퀀스의 마스터 트랙과 레벨 블루프린트의 블루프린트 인터페이스에서, 핀 유형을 블루프린트 인터페이스로 바꾸고, 엔드포인트에서 블루프린트 인터페이스 함수를 호출하면 됩니다.

  • 오브젝트가 다수인 바인딩에 대해서는 이벤트가 어떻게 트리거되나요?

    • 이벤트 엔드포인트는 핀 유형으로 형변환할 수 있는 바인딩된 오브젝트 각각에 대해 호출됩니다.

  • 이벤트 엔드포인트에서 핀 유형은 어떻게 나타나나요?

    • 오브젝트 바인딩에 있을 때, 오브젝트는 핀 유형으로 형변환하고, 오브젝트가 일치할 때만 호출합니다. 마스터 트랙에 있을 때, 레벨 블루프린트가 핀 유형에 일치하는 경우 이벤트를 호출합니다.

  • UMG 에서 이벤트를 어떻게 트리거하나요?

    • 레벨 시퀀스랑 똑같습니다. 위젠 자체가 마스터 이벤트 트랙에 대한 컨텍스트입니다. 바인딩된 위젯은 오브젝트 바인딩의 이벤트 트랙에 대한 컨텍스트입니다.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼