안녕하세요?


이번 포스팅에서는 이전에 상점씬을 열고 닫으면, 게임의 바로 시작지점으로 가는 문제가 있다고 지난번에 언급을 했었는데, 이번 포스팅에서는 그걸 어떻게 다듬어서 수정을 하였는지를 이번 포스팅에서 올리고자 합니다.



먼저 작업을 하기 위해서 GameManager.cs 스크립트를 찾아 가도록 합니다.



여기서 일단 상점씬을 여는데, LoadSceneMode를 Additive로 해서 test_Game씬이 닫히지 않도록 합니다.



다음으로는 ShopManager.cs스크립트를 열도록 합니다.



일단 씬을 닫는 명령어로는 Close같은 것이 있는게 아니라 위 스크린샷과 같은 명령어를 씁니다.



원래는 UnloadScene이라는 것만 있었는데, 유니티가 버젼업이 되면서 폐기가 되었고, 그래서 이번에는 위 스크린샷처럼 상점씬을 닫는 코드를 코딩해 주도록 합니다.




다른건 다 좋은데, 문제는 상점씬을 열면서 GameOver뷰의 인터페이스가 그대로 사라지지 않는 것을 볼 수 있습니다. 이래서야 곤란하기도 하기에, 어떻게 하도록 해 봅니다.



다시 GameManager.cs 스크립트를 찾아 가도록 합니다.



거기다가 gameOverCanvas를 사용 불가능하게 만들어 놓도록 합니다. 단 여기서 중요한 것은 Canvas 컴포넌트만 적용하는 것이기 때문에, AudioSource등은 그대로 아직 살아 있다는 것 입니다.



다음으로 ShopManager.cs스크립트를 열도록 합니다.



여기서는 상점씬을 닫기 때문에 다시금 gameOverCanvas를 사용가능 하도록 만들어 줄 필요가 있습니다.




그런데 유니티5에서 위 스크린샷과 같은 에러가 뜹니다. 



먼저 Shop_Scene을 열어서 Main Camera 게임 오브젝트를 열도록 합니다.



원래 있던 audioLinstener를 없애도록 합니다. 왜냐하면 이 컴포넌트가 2개의 씬에 동시에 존재할 이유는 없기 때문입니다.



그리고 EventSystem도 사용불능으로 바꾸어 놓습니다. 왜냐하면 2개의 씬이 열려 있으면, 2개의 EventScene이 열려 있을 필요는 없기 때문입니다.



이렇게 해서 마지막으로 상점씬을 게임오버 화면에서 자유롭게 오고가는 것이 가능하며, BGM은 여전히 게임오버의 화면에 나와 있는 것을 사용할 수 있게 되었습니다. 이제 남은 것은 이어서 게임중에 모은 동전을 상점씬과 연동하는 작업이 남았는데, 조만간에 관련된 내용으로 포스팅을 올리겠습니다.

+ Recent posts

티스토리 툴바