무엇을 찾고 계신가요?
Engine & platform

타임라인 신호 사용 방법

JULIEN BLAIS / UNITY TECHNOLOGIESContributor
May 21, 2019|6 분
타임라인 신호 사용 방법
이 웹페이지는 이해를 돕기 위해 기계 번역으로 제공됩니다. 기계 번역으로 제공되는 콘텐츠에 대한 정확도나 신뢰도는 보장되지 않습니다. 번역된 콘텐츠의 정확도에 관해 의문이 있는 경우 웹페이지의 공식 영어 원문을 참고해 주시기 바랍니다.

2017년 타임라인이 도입된 이후, 이벤트를 보낼 수 있는 방법을 참을성 있게 기다려주셨던 것을 잘 알고 있습니다. 더 이상 기다리지 마세요! Unity 2019.1부터 시그널이라는 새로운 기능을 통해 이벤트를 전송할 수 있습니다. 이 새로운 기능에 대해 자세히 알아보세요.

신호

타임라인 창에서 시그널이 표시되는 모습은 다음과 같습니다:

이미지

저희는 타임라인과 외부 시스템 간의 커뮤니케이션 채널을 구축하기 위해 시그널을 구축했습니다. 하지만 이는 무엇을 의미할까요? 이 접근 방식을 결정한 이유는 무엇인가요?

타임라인을 사용하여 컷씬을 만든다고 가정해 보겠습니다. 컷씬이 끝나면 새 씬을 로드하고 물리 시스템을 활성화하려고 합니다. 이 시나리오를 구현하는 방법에는 몇 가지가 있습니다:

컷씬이 끝나면 커스텀 스크립트를 사용하여 타임라인 인스턴스가 씬 매니저 및 물리 시스템과 직접 상호 작용하도록 합니다.

컷씬이 종료되면 마커와 신호를 생성하여 '컷씬 완료' 신호를 전송하고 관련 시스템이 신호에 반응하도록 합니다.

타임라인 팀은 이미터와 리시버를 독립적으로 유지하기 위해 두 번째 접근 방식을 선택했습니다. 독립적으로 유지하면 유연성, 성능 및 재사용성이 크게 향상됩니다. 이를 더 잘 이해하기 위해 여러 요소가 어떻게 함께 작동하는지 살펴보겠습니다.

어떻게 함께 작동하나요?

신호를 사용하여 외부 시스템과 통신하려면 신호 자산, 신호 발신기, 신호 수신기 등 세 가지가 필요합니다.

아키텍처
  • 신호 이미터: 시그널 이미터에는 시그널 에셋에 대한 참조가 포함되어 있습니다. 타임라인에서 신호 이미터는 마커로 시각적으로 표시됩니다. 트랙에 마커를 배치하거나 타임라인 눈금자 아래의 마커 영역에 마커를 배치할 수 있습니다.
이미지
  • 신호 수신기: 신호 수신기는 반응 목록이 있는 컴포넌트입니다. 각 반응은 시그널 에셋에 연결됩니다.
  • 신호 에셋: 신호 에셋은 신호 발신기와 신호 수신기 간의 연결입니다. 여러 타임라인 인스턴스에서 동일한 시그널 에셋을 재사용할 수 있습니다.

다음은 화면에 표시된 방향 이미지와 일치하는 화살표 키를 눌러 토끼 좀비를 물리치는 간단한 게임입니다:

각 음악 비트에 따라 방향 이미지가 무작위로 변경됩니다. 이미지가 변경되기 전에 오른쪽 화살표 키를 누르지 않으면 패배합니다. 특정 수의 화살표 키를 누르면 승리합니다.

게임에서 게임타임라인 인스턴스는 게임플레이를 포함합니다. 아래 완성된 게임 타임라인 인스턴스에서 볼 수 있듯이 신호를 사용하여 각 음악 비트마다 새로운 방향성 이미지를 표시합니다:

이미지

시그널을 만들고 설정하는 방법을 보여드리기 위해 시그널이 생성되지 않은 프로젝트부터 시작해 보겠습니다. 따라 해보고 싶다면 여기에서 프로젝트를 다운로드할 수 있습니다.

먼저 신호를 추가하는 마커 영역을 보려면 클립 편집 모드 옆에 있는 마커 아이콘을 클릭합니다. 마커 영역은 타임라인 눈금자 아래에 나타납니다:

image

신호 이미터를 추가하려면 마커 영역을 마우스 오른쪽 버튼으로 클릭하고 신호 이미터 추가를 선택합니다.

이미지

마커 영역에 신호 이미터가 나타납니다:

이미지

방금 추가한 신호 이미터가 선택되고 인스펙터 창에 해당 속성이 표시됩니다. 인스펙터 창에는 신호의 다른 부분을 만들기 위한 버튼도 있습니다:

이미지

신호 발신기를 신호 수신기에 연결하려면 새 신호 에셋을 추가해야 합니다. 인스펙터 창에서 신호 생성을 클릭합니다.... 이 신호 에셋은 수신기와 연결 및 이미터를 사용하여 방향 이미지를 변경하는 데 사용되므로 신호 에셋의 이름을 "ShowKey"로 지정합니다. 저장을 클릭하면 신호 에셋이 프로젝트에 추가됩니다.

또한 신호 발신기를 신호 수신기와 연결하려면 신호 수신기 추가를 클릭합니다. 이제 인스펙터 창이 다음과 같이 표시될 것입니다:

이미지

계속하기 전에 잠시 멈춰서 무슨 일이 일어나고 있는지 설명해 보겠습니다. 신호 수신기 추가 버튼을 클릭하면 바인딩된 게임 오브젝트에 새 신호 수신기 컴포넌트가 추가되고 방금 생성한 신호 에셋에 새 반응이 추가 및 연결되는 두 가지 일이 발생합니다. '쇼키'가 발신 신호로 나타나고 '쇼키'가 반응 목록에 추가되므로 두 신호가 연결되어 있음을 알 수 있습니다:

이미지

인스펙터 창에는 신호 이미터 프로퍼티와 신호 수신기 컴포넌트에 정의된 반응 두 가지가 표시됩니다:

이미지

신호 수신기 컴포넌트는 타임라인 인스턴스와 연결된 게임 오브젝트에 연결되어 있지만, 인스펙터 창에서 신호 수신기를 편집할 수 있습니다. 반응은 신호 수신기가 신호를 수신할 때 호출됩니다.

마지막 단계는 반응이 수행할 작업을 지정하는 것입니다. 이 예시에는 ShowRandomKey 메서드가 있는 Manager라는 컴포넌트가 있습니다. 이 방법은 새로운 무작위 화살표 키를 표시합니다. 반응이 ShowRandomKey 메서드를 호출하도록 하려면 아래와 같이 Unity 이벤트에 대해 이 메서드를 선택합니다:

이미지

여기까지입니다! 신호 이미터를 추가하고 신호 수신기와 반응을 정의했으면 이제 씬과 통신하는 타임라인 인스턴스의 예시가 생겼습니다.

타임라인이 신호 이미터에 도달하면 쇼키 신호가 방출됩니다. 쇼키 신호를 수신하고 있는 신호 수신기는 쇼랜덤키 메서드를 호출합니다.

하지만 여기서 멈출 필요는 없습니다. 여러 개의 신호 발신기가 동일한 신호를 방출할 수 있습니다. 예를 들어, 다음 타임라인 인스턴스에는 동일한 신호 이미터가 복사되어 다른 시간으로 이동되어 있으며, 모든 음악 비트에 대한 이미터가 있습니다:

신호 에셋을 프로젝트 창에서 타임라인 창으로 직접 드래그할 수도 있습니다. 신호 이미터는 이미 신호 방출 프로퍼티가 설정된 상태로 자동으로 생성됩니다.

모든 시그널이 포함된 완성된 프로젝트의 모습을 보려면 여기에서 다운로드하세요.

요약하면 다음과 같습니다.

첫 번째 신호를 설정하려면 다음을 수행해야 합니다:

마커 영역 또는 신호를 지원하는 트랙을 마우스 오른쪽 버튼으로 클릭한 다음 신호 이미터 추가...를 선택합니다 .

인스펙터 창에서 신호 자산 생성을 클릭하고 파일 이름을 선택한 다음 Enter 키를 누릅니다.

인스펙터에서 반응 만들기... 버튼을 클릭하고 방금 만든 신호와 연결된 반응을 정의합니다.

보너스 FAQ
  • 하나의 게임 오브젝트에 여러 개의 리시버를 사용할 수 있나요? 예, 게임 오브젝트의 모든 신호 수신기는 해당 게임 오브젝트로 전송된 신호를 수신합니다.
  • 여러 타임라인 인스턴스 간에 신호 에셋을 재사용할 수 있나요? 예, 하나의 시그널 에셋을 두 개 이상의 타임라인 인스턴스에서 사용할 수 있습니다.
  • 시그널 에셋을 확장하고 사용자 지정할 수 있나요? 예, 시그널 에셋, 시그널 이미터, 시그널 리시버 모두 확장할 수 있습니다. 하지만 이 주제는 다른 날에 다룰 주제이므로 사용자 지정에 대한 다른 블로그 포스팅이 있을 예정입니다.
  • 신호 방출이 보장되나요? 맞습니다. 신호는 건너뛰지 않고 게임의 FPS에 관계없이 다음 프레임에 발신됩니다.
  • 타임라인 에셋에 신호 이미터가 중복되면 어떻게 되나요? 신호 이미터는 신호 에셋에 대한 참조를 유지합니다. 시그널 에셋은 중복되지 않습니다.

---

Unity Learn 프리미엄 플랫폼에서 타임라인을 사용하기 위한 초급 및 고급 학습 콘텐츠를 확인해 보세요.