본문 바로가기

볼봇의 코딩 생활/언리얼한 엔진

UE4 MediaPlayer 에서 Seek 사용하기

인 게임에서 미디어를 재생하다가 중간에 특정한 위치로 이동해야할 필요가 있다.

 

Seek 를 쉽게 볼 수 있는 곳

이때 유튜브에서 쉽게 볼 수 있는 플레이 바를 이리저리 움직이는 기능을 구현하고 싶을텐데,

언리얼 엔진에서는 Seek 라는 함수를 통해 이 기능을 제공 한다.

 

UMediaPlayer::Seek | Unreal Engine Documentation

 

UMediaPlayer::Seek

Seeks to the specified playback time.

docs.unrealengine.com

오늘은 UMediaPlayer::Seek 함수를 사용하는 방법에 대해 간단히 알아보겠다.

 

Media 열기

우선 간단히 오디오 파일을 열 수 있도록 구현해보겠다.

void AMusicSelectPawn::BeginPlay()
{
	MediaPlayer = NewObject<UMediaPlayer>();
	MediaSoundComponent->SetMediaPlayer(MediaPlayer);
	MediaPlayer->OnMediaOpened.AddDynamic(this, &AMusicSelectPawn::OnSampleMediaOpened);
}

 

UMediaPlayer 객체를 만들고, MediaSoundComponent 에 플레이어를 설정한다.

그리고 미디어가 열렸을 경우 호출 받을 수 있는 콜백함수도 하나 준비한다.

 

 

void AMusicSelectPawn::OnSampleMediaOpened(FString OpenedURL)
{
	MediaPlayer->Play();
	
	if(MediaPlayer->SupportsSeeking())
	{
		FTimespan TimeSpan(0,0,5);
		MediaPlayer->Seek(TimeSpan);
	}
}

미디어가 열렸다면 이제 Seek 를 통해 이리저리 위치를 옮길 수 있다.

UMediaPlayer::SupportsSeeking() 은 Seeking 을 지원하는지를 반환한다.

 

UMediaPlayer::SupportsSeeking | Unreal Engine Documentation

 

UMediaPlayer::SupportsSeeking

Check whether the currently loaded media can jump to a certain position.

docs.unrealengine.com

 

옮길 위치를 정하는게 중요한데, FTimespan 구조체를 새로 만들고 생성자를 호출 할 때 설정 할 수 있다.

FTimespan TimeSpan(HOUR,MIN,SECONDS);

 

참고로, 생성자 관련 코드는 오버로딩되어 있으므로, 해당 구조체 코드를 열어보면 쉽게 가늠 할 수 있다.