목표 1: 로딩 씬
- StartScene 씬을 생성하고, 버튼 ui를 생성한다.


- 빈 객체를 만들고 LoadNewScene 로 오브젝트 이름을 짓고, 스크립트를 생성하여 할당한다.

- LoadingScene 씬을 생성하고, 이미지 ui 생성 후 FillAmount을 0으로 맞춘다. 이미지 ui의 이름은 ProgressingBar로 짓는다.


- 그리고 기존 인 게임 씬인 PlayGround 씬 존재 여부를 파악한다.


- 다시 StartScene으로 돌아가서 LoadNewScene 스크립트를 작성한다.먼저, 버튼에 이벤트를 연결할 메서드를 작성한다.

- 기존 동기방식으로 씬을 로드하는 것이 아닌 비동기 방식으로 연결한다.
- LoadingScene을 추가 로드합니다 (Additive 모드).
- Additive 모드는 기존 씬을 유지한 채로 새로운 씬을 추가하는 모드입니다.
이를 통해 로딩 씬과 실제 로드할 씬을 동시에 관리할 수 있습니다.
📄 비동기 방식
- 비동기(Asynchronous) 로드란 게임이 멈추지 않고 다른 작업을 하면서도 씬을 불러오는 기능입니다.


- 현재 LoadingScene 씬인데 PlayGround 씬을 불러오려고 로딩 중이다.
- LoadNextScene 코루틴을 작성한다.

- ⭐ yield return null (한 프레임 대기) 후 코드를 실행 하도록 한다. 그 이유는 로딩 씬이 제대로 활성화 되기 전에 GameObject.Find("ProgreesingBar") 을 호출하면 오브젝트를 찾지 못할 가능성이 있기 때문이다.
- SceneManager.LoadSceneAsync()로 인자로 받은 sceneName 씬을 비동기 방식으로 해당 씬을 로드하고 ⭐ op에 저장한다.
- ⭐ op.allowSceneActivation = false → 씬이 100% 로드되어도 자동으로 전환되지 않음. 직접 코드로 씬을 전환할 수 있도록 합니다 ( 아래 while문 참고, 로딩이 꽉 차야 씬을 전환할 수 있게 해야 하므로 수동으로 전환되게 하기 위함임)
- 6-1. 로딩 프로세스 코드를 작성한다.

- !op.isDone 을 while문의 조건으로 하여 씬이 전환될 때까지 루프를 돌린다.
- 로딩 진행 상태 체크를 한다. 비동기 방식의 progress의 범위는 0.0~0.9이다. 이 것을 기준으로 하여 if/else 문으로 나눈다. 즉, 0.9보다 작다면 아직 로딩 중인 것이고, 크다면 로딩이 거의 완료 되었다는 뜻이다.
- 로딩 중이면 progressbar의 이미지를 채운다. 단, 로딩 상태가 0.9까지의 조건이다. 나머지 0.1는 else문에서 채워야 한다.(깔끔하게 로딩 바를 채우기 위함임)
- else문에서 이미지의 fillAmount을 1(최댓값)으로 채운다.(깔끔하게 로딩바를 꽉 채움). 그 후 timer를 시작하여 1초가 되면 씬 전환을 완료한다. ⭐이때, 씬 전환을 완료 하려면 op.allowSceneActivation = true; 을 꼭 해야 한다.
op.progress // 씬의 로드 상태를 나타낸다.
//0.0~0.9 : 씬의 실제 로딩 중인 상태를 나타낸다.
// 0.9~1.0 : Unity가 내부적으로 정리하는 추가 작업이다. (씬이 거의 완료됨)