간혹 UI에서 동영상이 재생되어야할 필요가 있다.
유니티에서도 이런 상황을 위해서 비디오플레이어라는 것이 존재하는데,
굉장히 기본적인 기능이지만, 해본적이 없으면 막막할 수 있다.
지금은 저장되어있는 동영상을 유니티에서 재생하는 방법을 알아보고
다음번 글에서는 유니티에서 인터넷을 통해 동영상을 스트리밍하는 방법을 알아볼 것이다.
간단하게 먼저 요약하자면,
비디오플레이어와 렌더텍스쳐를 생성하여 이미지에 연결해주고 동영상을 넣어주면 재생된다.
당연히 이해가 안될테니 자세하게 살펴보도록 하자.
우선 유니티 프로젝트를 하나 생성하고 RawImage를 하나 생성해준다. (이건 너무 기본적인 것이니까 이미지는 생략)
하이어라키창에서 우클릭을 하여 Video -> Video Player를 눌러서 비디오플레이어를 생성한다.
비디오플레이어가 생성되었지만,
비디오 플레이어를 재생하기 위해서는 2가지 요소가 필요하다.
첫번째는 재생할 동영상 파일이 필요하고, 두번째는 렌더텍스쳐(Render Texture)라는 것이 필요하다.
랜더텍스쳐를 생성해주자.
프로젝트패널에서 우클릭하여 Create -> Render Texture를 클릭하면 생성된다.
렌더텍스쳐가 생성되었다면, 이 렌더텍스쳐를 비디오플레이어에 연결해주어야한다.
비디오플레이어가 동영상을 재생하고 그 내용물을 렌더텍스쳐에 투영한다고 생각하면 된다.
비디오플레이어가 스스로 UI에 표현될 수가 없으니,
동영상을 렌더텍스쳐에 투영시킨 뒤 이 렌더텍스쳐를 UI에 그려주는 것이다.
그럼 이제 거의 모든 준비가 끝났다.
이제 플레이할 동영상 원본을 유니티에 가져와서 비디오플레이어에 연결해주면 된다.
그럼 비디오플레이어의 준비는 끝났다.
비디오 플레이어가 동영상을 재생해서 렌더텍스쳐에 그려주고 있으니,
이제 렌더텍스쳐를 아까 맨처음에 만들었던 RawImage에 연결해주면 된다.
로우이미지에 렌더텍스쳐를 연결하자마자 씬패널에서 보이던 로우이미지가 투명해지면 제대로 된 것이다.
이제 비로소 비디오플레이어와 로우이미지가 동일한 렌더텍스처로 연결이 되었고,
비디오플레이어가 동영상을 재생하여 그대로 렌더텍스쳐에 복사해줄 것이고 그 내용이 연결되어있는 로우이미지에서 표현될 것이다.
플레이를 해보면 이제 RawImage에서 동영상이 재생되는 것을 확인할 수 있다.
추가로 몇가지 설정사항들에 대해서 알아두면 더 좋다.
전부 다 알아볼수는 없지만 중요한 몇가지만 살펴보자면
먼저 비디오플레이어,
Play On Awake는 플레이를 시작하자마자 동영상을 재생할 것인가를 묻는 것이다.
체크를 해제할 경우 플레이하더라도 동영상은 재생되지 않는다.
이 경우 스크립트를 통해서 클릭했을 때만 동영상이 재생되게 하는 등의 설정을 할 때 체크를 풀곤 한다.
Loop는 반복여부이므로 체크를 해준다면 동영상이 계속 반복재생된다.
그리고 Source는 동영상의 방식을 설정할 수 있다.
Video Clip을 선택할 경우는 방금 처럼 동영상 파일을 가지고 있는 경우에 직접 동영상을 연결해서 사용하는 것이다.
만약 URL을 선택하면 동영상이 위치한 주소를 적어줘서 해당 위치를 탐색해서 동영상을 가져온다.
그 다음으로 랜더텍스쳐를 살펴보면,
사이즈는 다 알겠지만 동영상이 재생될 크기라고 보면 된다.
기본적으로 256x256인데 각자의 상황에 따라 더 크게 만들어도 된다.
그리고 Color Format이 중요한데,
동영상을 유니티에서 위와같은 방식으로 재생을 해보면 화질이 뭔가 상당히 떨어지는 것을 볼 수 있다.
사이즈가 변하면서 발생한 문제일 수도 있는데 대부분은 Color Format이 문제이다.
기본적으로 설정되어있는 colorFormat이 화질이 굉장히 안좋다.
클릭해보면 종류가 굉장히 많은데 직접 본인 동영상에 잘 맞는 것을 찾아서 사용하도록 하자.
다만, PC의 경우는 포멧을 변경해도 대부분 잘 재생이 되지만 모바일환경인 경우 거의 대부분의 포멧이 지원되지 않는다.
모바일에서 지원되는 포멧을 잘 알아보고 사용해야할 것이고 자신 없다면 화질을 좀 포기하더라고 그냥 기본상태를 사용하자.
'유니티 Unity > 유니티 기능 구현' 카테고리의 다른 글
[유니티] 초보자를 위한 제이슨을 사용하는 방법 (3) | 2022.01.15 |
---|---|
[유니티] 레이캐스트 총정리 - Unity Raycast (0) | 2022.01.12 |
[유니티] 서버(인터넷)에서 이미지 가져와서 사용하는 방법 (0) | 2022.01.04 |
[유니티] 코루틴의 사용법 총정리 - Unity Coroutine (2) | 2021.12.05 |
[유니티] 리지드바디(Rigidbody) 스크립팅 (0) | 2021.09.11 |
댓글