Unreal - 위젯에 동영상 파일 추가하기 (인트로)

2025. 5. 30. 00:11·Unreal5 프로젝트 다이어리

언리얼 인트로를 추가해보겠습니다

Content폴더에 Movies로 폴더를 생성

 

해당 폴더에 사용할 mp4 파일을 옮겨줍니다

 

 

 

ㅎ

파일 미디어 소스의 파일경로가 제데로 Movies/ ~mp4로 끝나는지 확인합니다

 

미디어플레이어에 해당 영상을 더블클릭해 지정해줍니다

 

 

 

Media Player 를 만듭니다

 

비디오가 미디어 텍스처 에셋 출력 체크해줍니다

 

Media Player, Media Texture가 생성되었습니다

 

Media Player에서 재생될 영상을 선택해줍니다

 

위젯에 Media Texture을 꺼내준다

 

Media파일을 c++에서 제어할려면 Build.cs파일에 모듈을 추가해야합니다

해당 모듈을 추가해주시면됩니다

"MediaAssets"

 

필요한 헤더를 추가합니다

#include "MediaPlayer.h"
#include "MediaSource.h"
#include "Components/Image.h"

 

 

UCLASS()
class BLASTERDREAM_API UIntroWidget : public UUserWidget
{
	GENERATED_BODY()

public:
	virtual void NativeConstruct() override;

	UPROPERTY(meta = (BindWidget))
	UImage* Image_IntroVideo;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MySettings")
	UMediaPlayer* introPlayer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MySettings")
	UMediaSource* introMediaSource;
};
void UIntroWidget::NativeConstruct()
{
	Super::NativeConstruct();

	introPlayer->OpenSource(introMediaSource);
	introPlayer->Play();
}

 

재생시킬 플레이어와 source를 할당해줍니다

 

ProjectSetting에서 DirectX를 치고 DirectX11로 변경해줍니다 해당 내용의 적용을 위해 엔진을 재시작해줍니다

 

이미지를 캔버스패널에 꽉 맞추기위해 앵커를 꽉차게 그리고 오프셋을 전부 0으로 설정해줍니다

 

만약 영상이 재생되지않는다면

플러그인에서 Electra Player를 설치해줍니다

 

영상의 사운드는 별도로 처리를 해줘야 사운드가 출력됩니다

인트로맵에서 액터를 만들고 해당 액터에 사운드를 출력해도됩니다

저는 인트로맵에서 사용할 플레이어컨트롤러를 별도로 만들고 플레이어컨트롤러에서 사운드를 출력하도록 하겠습니다

 

UPROPERTY(EditAnywhere, Category = "MySettings")
UMediaPlayer* shareMediaPlayer;

UPROPERTY()
UMediaSoundComponent* introSoundComponent;

 

필요한 헤더추가합니다

#include "MediaSoundComponent.h"

 

BeginPlay에서 사운드를 출력시킵니다

introSoundComponent = NewObject<UMediaSoundComponent>(this); 
introSoundComponent->SetMediaPlayer(shareMediaPlayer);       
introSoundComponent->RegisterComponent();

 

 

영상이 끝나면 델리게이트로 메인메뉴창이 있는 맵으로 이동합니다

void UIntroWidget::NativeConstruct()
{
	Super::NativeConstruct();
	introPlayer->OpenSource(introMediaSource);
	introPlayer->Play();
	introPlayer->OnEndReached.AddDynamic(this, &UIntroWidget::IntroFinished);
}

void UIntroWidget::IntroFinished()
{
	if (!targetLoadingMap.IsEmpty())
	{
		UGameplayStatics::OpenLevel(this, FName(*targetLoadingMap));
	}
}

 

결과물

 

 

 

'Unreal5 프로젝트 다이어리' 카테고리의 다른 글

Unreal - 위젯 나이아가라  (0) 2025.06.06
Unreal - Foot Step Sound  (0) 2025.05.30
Unreal - 새로하기, 이어하기 메인메뉴 만들기  (0) 2025.05.29
Unreal - 던전 클리어 위젯 만들기  (0) 2025.05.25
Unreal - 플레이어 리스폰  (0) 2025.05.24
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
  • Unreal - 위젯 나이아가라
  • Unreal - Foot Step Sound
  • Unreal - 새로하기, 이어하기 메인메뉴 만들기
  • Unreal - 던전 클리어 위젯 만들기
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (125) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (5) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • C++ 프로그래머스 다이어리 (23) N
        • Stack (3)
        • Hash (4)
        • Heap (2)
        • Sort (3) N
      • 코드 개인보관함 (8) N
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    unreal look at
    unreal sequence
    unreal 시퀀스
    언리얼
    언리얼 behaviortree
    언리얼 시퀀스
    언리얼 컷씬
    unreal 모션매칭
    언리얼 motionmatching
    언리얼 모션매칭
    unreal 로딩
    언리얼 비헤이비어트리
    언리얼 페이드 아웃
    unreal 컷씬
    언리얼 look at
    언리얼 foot step
    언리얼 behavior tree
    unreal loading
    언리얼 로딩
    언리얼 로딩창
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal - 위젯에 동영상 파일 추가하기 (인트로)
상단으로

티스토리툴바