본문 바로가기

유니티/2D러닝액션(모바일)

유니티 2D 로딩씬 제작

반응형

시작하기에 앞서서

https://wergia.tistory.com/194

 

[Unity3D] Programming - 로딩 씬(Loading Scene) 구현하기(커튼 방식)

Programming - 로딩 씬(Loading Scene) 구현하기(커튼 방식) 작성 기준 버전 :: 2019.1.4f1 [이 포스트의 내용을 유튜브 영상으로도 시청하실 수 있습니다] 게임의 장르와 배경들의 종류는 많고도 많지만 그

wergia.tistory.com

이 블로그를 참고해서 글을 작성한다

 

가장핵심이 되는 코드는 아래와 같다

private IEnumerator Load(string sceneName)
    {
        AsyncOperation op=SceneManager.LoadSceneAsync(sceneName);
        //비동기 방식으로 씬을 불러오는 도중에도 다른 작업을 할 수  LoadSceneAsync 함수
        //로딩의 진행정도는 AsyncOperation Class로 반환된다
        op.allowSceneActivation=false;//로딩이 끝나면 씬을 바로 시작 못하게 한다
        float timer=0.0f;
        while(!op.isDone)//isDone이 false일 때 동안, 즉 Load가 진행중을 의미한다
        {
            yield return null;
            timer+=Time.unscaledDeltaTime;
            if(op.progress<0.9f)//씬 로딩이 90% 미만이라면
            {
                Bar.fillAmount=Mathf.Lerp(Bar.fillAmount,op.progress,timer);
                if(Bar.fillAmount>=op.progress)
                {
                    timer=0f;
                }
            }
            else//씬 로딩이 90% 이상이라면
            {
                Bar.fillAmount=Mathf.Lerp(Bar.fillAmount,1f,timer);
                if(Bar.fillAmount==1.0f)//fillAmount가 다 차면
                {
                    yield return new WaitForSeconds(4.0f);
                    op.allowSceneActivation=true;
                    break;
                }
            }

        }
    }

 처음에 Mathf.Lerp는 무엇인지 몰랐다. 선형보간이라는 건데 간단히말하면 Matf.Lerp(float a,float b,float c)에서 

a와 b지점 사이의 (c*100)% 지점을 반환한다. 만약 c가 0.5라면  a+b의 절반값을 반환한다. 만약 c가 1이라면 b값을 반환하고 c가 0이라면 a값을 반환한다. 유니티에서 선형보간은 로딩씬에서 로딩바가 자연스럽게 움직이는데에 보통 사용된다고 한다.

 내가 채택한 방식은 참고한 블로그에서 언급한 기준으로 얘기하자면 커튼방식이다. 게임플레이로 넘어가기전 로딩UI를 켜고 그 안에서 Bar게이지가 차는 모습을 보여주는 것이다. LoadSceneAsync는 주석에 달았듯이 씬을 불러오면서 다른 작업을 진행할 수 있고 어느정도 불러왔는지도 AsyncOperation Class를 통해 알 수 있게 해준다.

 op.allowSceneActivation=false로 지정해줘서 씬을 다 로드해도 바로 실행되지는 않게 해준다. 나 같은 경우엔 워낙 불러오려는 씬이 가벼워서 로딩이 순식간에 끝나서 도중에 yield return new WaitforSeconds(4.0f)를 써서 로딩이 완료되서 bar가 100%다 차도 4초정도 기다리게 해줬다.

 아래는 실행영상이다

 

댓글과 지적은 언제든지 환영입니다~!

 

donaricano-btn글이 마음에 들었다면 왼쪽이미지를 눌러서 후원 부탁드립니다><

반응형