상세 컨텐츠

본문 제목

유니티 프로젝트 씬 전환 시 Fade In, Fade Out

프로그래밍/유니티

by 개발자입니다 2020. 6. 19. 03:06

본문

728x90
반응형

 

오늘은 프로젝트 씬 사이 보다 자연스러운 씬 전환을 보여 줄 수 있도록 하는, 화면을 점점 어둡게 하거나 점점 투명하게 하여 더욱 매끄러운 씬 전환을 하는 방법에 대하여 알아보겠습니다.

 

저번 알파 값을 이용하여 투명도를 조절 하는 방법을 포스팅 하였는데요, 오늘은 그 알파 값과 Time.deltaTime 값을 이용해 씬 화면이 더 자연스럽게 보이도록 조정하겠습니다.

 

먼저 판넬 하나를 만들고, 투명도를 100으로 한 뒤, 다음과 같은 스크립트를 작성해 컴포넌트합니다. 

 

 

 

 

public class Init_Splash : MonoBehaviour

{

    GameObject SplashObj;               //판넬오브젝트

    Image image;                            //판넬 이미지

 

    private bool checkbool = false;     //투명도 조절 논리형 변수

 

    void Awake()

    {

        SplashObj = this.gameObject;                         //스크립트 참조된 오브젝트

        image = SplashObj.GetComponent<Image>();    //판넬오브젝트에 이미지 참조

    }

 

    void Update()

    {

        StartCoroutine("MainSplash");                        //코루틴    //판넬 투명도 조절

        if (checkbool)                                            //만약 checkbool 이 참이면

        {

            Destroy(this.gameObject);                        //판넬 파괴, 삭제

        }

    }

 

    IEnumerator MainSplash()

    {

        Color color = image.color;                            //color 에 판넬 이미지 참조

 

        for (int i = 100; i >= 0; i--)                            //for문 100번 반복 0보다 작을 때 까지

        {

            color.a -= Time.deltaTime * 0.01f;               //이미지 알파 값을 타임 델타 값 * 0.01

 

            image.color = color;                                //판넬 이미지 컬러에 바뀐 알파값 참조

 

            if (image.color.a <= 0)                        //만약 판넬 이미지 알파 값이 0보다 작으면

            {

                checkbool = true;                              //checkbool 참 

            }

        }

        yield return null;                                        //코루틴 종료

    }

}

 

 

 

이후  실행 하면 화면이 점점 투명해지며, 자연스러운 씬 전환이 될 것이다.

 

또, 반대로 한다면, 화면이 점점 불투명 해지며, 반대의 상황도 가능하다.

 

아래는 실행 영상이다. 

 

 

 

 

 

 

 

728x90
반응형

관련글 더보기

댓글 영역