유니티5 독학 & 게임 제작

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

인터넷떠돌이 2018. 9. 7. 14:08
반응형

안녕하세요?


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



일단 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라는 것으로 위 스크린샷처럼 지정을 하는 것으로 마무리를 할 수 있습니다. 이것으로 스크립트에 대한 문제는 다 해결되기는 했지만, 그래도 아직 문제가 심각한 것이 남아 있는데, 다음 포스팅에서 이에 대해서 올리고자 합니다.

반응형