본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 84번째 걸음-업그레이드를 위한 shop씬을 여닫기part2

by 인터넷떠돌이 2018. 9. 7.
반응형

안녕하세요?


지난번 시간에는 어떻게 해서 배경화면까지 만드는 것에는 성공하기는 했는데, 문제는 이번 포스팅에서도 완전히 성공은 하지 못해서, 이래저래 상당히 많이 헤메는 과정을 거쳤는데, 이번 포스팅은 그 헤메는 과정의 중간 과정이라고 할 수 있습니다.



일단 ShopCanvas에 이 컴포넌트가 없어서 문제가 될 것인가 싶어서 우선 추가해 주기로 합니다.



다음으로는 GameManager처럼 Shop씬을 유지하기 위해서 ShopManager라는 게임 오브젝트를 추가 하도록 합니다.



그리고 스크립트 폴더로 가서, 위 스크린샷처럼 ShopManager.cs라는 스크립트를 생성하도록 합니다.



그리고 과거에 NGUI를 배울 때 처럼 코딩을 했는데, 계속해서 에러가 생기는 것을 볼 수 있었습니다.




그리고 씬 전환을 위해서 Build Settings를 들어가 보도록 합니다.



지금 나와 있는 Shop_Scene를 추가해 주도록 하며



test_Game씬을 열기전에 위 스크린샷처럼 ShopManager게임 오브젝트에 위 스크린샷처럼 ShopManager.cs를 컴포넌트로서 추가해 주도록 합니다.



그리고 씬 전환을 위해서 버튼을 하나 만들어 주기 위해서 Shop_Canvas의 자식 오브젝트로서 추가를 하나 해 주도록 합니다.




그리고 일단 버튼 컴포넌트를 추가한 다음에, OnClick()이벤트로 ExitShop()메서드를 지정하도록 합니다.



그런데 위 스크린샷처럼 에러가 뜨는 것을 볼 수 있었습니다.



그래서 NGUI때와는 다른 것을 써야 한다는 것을 알고는, 자료를 찾아보니 SceneManager.LoadScene이 있다는 것을 알 수 있었습니다. 그래서 이걸 좀 찾아 보았습니다.



그리고 LoadSceneMode라고 해서 Single일 경우 그냥 지금의 씬을 닫고 새로운 씬을 연다는 것이고, Additive는 기존의 씬이 열려있는 상태에서 새로운 씬을 연다는 것을 알 수 있습니다.




먼저 스크립트의 가장 상단에 위 스크린샷처럼 using UnityEngine.SceneManagement; 라는 것을 추가해 주도록 합니다.



그리고 메소드를 위 스크린샷처럼 코딩을 해 주도록 하는데, SceneManager.LoadScene("열고자 하는 씬의 이름",LoadSceneMode.지정); 이라는 방식으로 이렇게 코딩을 합니다. 


여기서 지정이라는 것은 위에서 언급한 모드로, Single 혹은 Additive가 오게 됩니다.



그런데 메소드를 제대로 지정하고 나서도, 위 스크린샷처럼 에러 메세지가 나오는 것을 볼 수 있습니다. 이 에러메세지는 줄 바꿈에 대해서 에러가 나오는 것으로, 이게 새로 스크립트를 생성해서 만들면 이런 에러가 종종 생기는 듯 합니다.



먼저 스크립트를 다른 이름으로 저장하기를 눌러서, 바로 저장을 하는 것이 아니라, 위 스크린샷처럼 저장 옆에 있는 아랫쪽 화살표를 눌러 주도록 합니다.



그리고 줄바꿈이 문제가 되어서 발생하는 문제가 되기 때문에, 줄 끝 이라고 해서 CR+LF라는 것으로 위 스크린샷처럼 지정을 하는 것으로 마무리를 할 수 있습니다. 이것으로 스크립트에 대한 문제는 다 해결되기는 했지만, 그래도 아직 문제가 심각한 것이 남아 있는데, 다음 포스팅에서 이에 대해서 올리고자 합니다.

반응형