728x90
씬 전환 간에 VideoPlayer의 targetCameraAlpha값을 조정해서 페이드 인, 페이드 아웃 효과를 만들어보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
public class VideoManager : MonoBehaviour
{
VideoPlayer videoPlayer;
public bool isChanged;
public VideoClip[] videoClips;
int indexNumber;
|
- videoPlayer - VideoPlayer를 저장할 변수입니다.
- isChanged - 씬 전환이 완료 여부를 저장할 변수입니다.
- videoClips - 재생할 비디오 클립을 저장할 변수입니다.
- indexNumber - 다음 비디오 클립의 인덱스 숫자를 저장할 변수입니다.
1
2
3
4
5
6
|
void Awake()
{
indexNumber = 0;
videoPlayer = GetComponent<VideoPlayer>();
SetVideo();
}
|
indexNumber값을 초기화해주고, videoPlayer의 값을 가져옵니다. 그리고 SetVideo 함수를 실행시켜줍니다.
1
2
3
4
5
6
7
8
9
10
|
public void SetVideo()
{
if (indexNumber < videoClips.Length)
{
videoPlayer.clip = videoClips[indexNumber];
indexNumber++;
}
else
videoPlayer.clip = null;
}
|
만약에 indexNumber가 videoClips의 길이보다 작다면 videoPlayer에 indexNumber에 맞는 videoClips를 넣어줍니다.
위 그림은 씬 전환 순서에 대한 내용을 담고 있고, FadeIn과 FadeOut 코드의 이해를 높이기 위해서 넣었습니다.
1
2
3
4
5
6
7
8
9
|
public IEnumerator FadeIn()
{
isChanged = false;
while (videoPlayer.targetCameraAlpha < 0.99f)
{
videoPlayer.targetCameraAlpha += 0.025f;
yield return new WaitForSeconds(0.01f);
}
}
|
코루틴을 통해서 FadeIn 기능을 구현해줍니다. FadeIn은 씬 전환이 완료되고 나서 실행되기 때문에 isChanged를 false로 바꿔줍니다. 그리고 videoPlayer의 targetCameraAlpha값을 0.99f 보다 높을 때까지 값을 올려줍니다.
1
2
3
4
5
6
7
8
9
10
|
public IEnumerator FadeOut()
{
while (videoPlayer.targetCameraAlpha > 0.01f)
{
videoPlayer.targetCameraAlpha -= 0.025f;
yield return new WaitForSeconds(0.01f);
}
isChanged = true;
}
}
|
FadeIn에서 반대로 코루틴을 구현하면 됩니다.
728x90
'Unity' 카테고리의 다른 글
[Unity] 공중에 있는 땅 통과 후 착지 구현 (0) | 2020.06.15 |
---|---|
[Unity] Video Player 페이드 인, 페이드 아웃 효과 만들기 (2) (0) | 2020.06.13 |
[Unity] 코루틴이 뭐야? (0) | 2020.06.07 |
[Unity] 델리게이트가 뭐야? (0) | 2020.06.02 |
[Unity] 생명 주기가 뭐야? (0) | 2020.06.01 |