이번 예제는 앞서 만들었던 간단한 게임에 이어서 진행됩니다.
일단 씬 전환을 위해 LoadScene이라는 새로운 스크립트를 만들고 코딩을 바로 시작합니다.
4번 줄을 통해 SceneManger을 사용할 수 있습니다.
8번 줄 static 변수의 경우는 Box를 제거할 때마다 변수를 1씩 증가시켜 3이 되면
현재 씬을 로드하여 게임을 재시작할 수 있게 하기 위함입니다.
Update() 안에 sceneLoadNumber가 3이 되었을 때 sceneLoadNumber을 다시 0으로 만들어주고
SceneManager.LoadScene(sceneName); 을 통하여 현재 씬을 로드해줍니다.
그렇다면 sceneLoadNumber는 어디서 올려주면 좋을까요?!
바로
bullet 스크립트가 가장 적절하지 않을까 합니다.
bullet이 Tag가 Box인 오브젝트와 충돌할 때에만 반응하기 때문입니다.
그러므로 여기에 LoadScene.sceneLoadNumber += 1;을 추가하여
bullet이 Box인 오브젝트와 충돌할 때
LoadScene 스크립트에 있는 sceneLoadNumber을 1씩 증가시켜줍니다.
이제 LoadScene 스크립트를 적용하여 주기만 하면 되겠죠?
GameManager를 따로 만들어도 되지만 작은 프로젝트이기에 간단히 Player에 적용시키고
게임이 끝난 후 load할 씬의 이름을 적어줍니다.
이제 실행 화면을 보도록 할까요?
?! 분명히 씬을 다시 로드하여 게임을 재시작해주고 있지만 맵이 어두워지는 걸 보실 수가 있습니다.
사실 이 프로젝트를 빌드하고 실행파일을 실행하면
이처럼 아무 문제없이 진행되는 걸 보실 수가 있습니다.
찾아보니 버그..라고 하더군요?! 음.. 뭔가 이유를 알고 싶었는데..
일단 해결책은 참 간단하였습니다.
유니티 메뉴 중 Window에서 Lighting -> Settings에 들어가신 뒤
하단 부분의 Auto Generate를 체크 해제하고 Generate Lighting을 누르시면 해결 끝입니다..
이렇게 하고 실행을 하면
Project 란에 Lighting Data가 생긴 걸 확신하실 수 있으며 유니티 Game 뷰 상에서도 아무 문제 없이 실행되는 것을 확인하실 수 있습니다.
여기서 SceneManager의 경우
https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.html
을 참고하시면 더욱 도움이 되겠습니다.
'Unity > 기초 예제' 카테고리의 다른 글
유니티 Particle 파티클을 이용하여 비 내리는 효과 만들기 간단한 예제 유니티 기초 (2) | 2021.07.08 |
---|---|
유니티 씬 전환시 오브젝트 유지하기 DontDestroyOnLoad 간단한 예제 유니티 기초 (0) | 2021.06.21 |
유니티 Raycast를 이용한 간단한 게임 만들기 Part 3 Player LineRenderer 간단한 예제 유니티 기초 (0) | 2021.06.14 |
유니티 Raycast를 이용한 간단한 게임 만들기 Part 2 Player 간단한 예제 유니티 기초 (0) | 2021.06.09 |
유니티 Raycast를 이용한 간단한 게임 만들기 Part 1 Stage 간단한 예제 유니티 기초 (0) | 2021.06.08 |