RPG게임에서 맵(씬) 이동을 만들고 있는데,
지금 게임매니저에 UI 요소들이나, 대화 매니저, 퀘스트 매니저 이런애들을 public으로 선언해두고 인스펙터에 이런 애들을 끌어다 놓고 사용해서 문제가 생겼어.
게임매니저에 DontDestroyOnLoad를 해서 다음 씬에도 유지되도록 하는데, 저 인스펙터에 끌어다놓은 친구들은 당연히 유지가 안돼서 게임이 안돌아가..
걍 떠오르는 방법은 두가지인데,
하나는 저 필요한 요소들 전부 DontDestroyOnLoad 해주는건데 이건 좀 아닌것 같고,
하나는 게임매니저에서 씬이 바뀔때마다 저 오브젝트들을 전부 Find 해서 참조해주는 거 인데,
이거 말고도 더 바람직한 방법이 있을까?
씬이 바뀔떄마다 저 오브젝트들을 전부 find하면 얼마나 끔찍한일이 일어날지 생각해봐
그럴거 같아서 어떤 방법이 제일 이상적인지 궁금해
딱봐도 하면 안되겠지
여러 방법이 있는데 일단 A,B,C 씬이 있다고 해보자 A씬 = player만 있는 씬 B씬 = 상점씬 C씬 = 마을씬
유니티 다중씬 지원하는거 알지? A씬은 항상 켜놓고, 상점으로 들어가면 B씬(상점)을 로드하는거임 그럼 A씬+B씬이 되겠지 그리고 상점에서 나오면 B씬은 끄고 C씬을 키는식으로 결론은 A씬에 데이터 매니저들을 몰아주고 씬만 껏다 켯다 하면 됨
다른 방법으로는 A씬에서 넘기려는 데이터를 가진 클래스를 DontDestroyObject 해놓고 B씬에 있는 스크립트에서 A씬에서 넘긴 데이터가 필요하면 Start함수에서 가져오고 해당 오브젝트 파괴하던지 게임이 크면 이방법은 로딩이 길어질수가 있어서 비추이긴한데
다중씬을 활용할수도 있었구나. 혹시 게임이 모바일을 목표로 하고있는데 모바일 환경에서 다중씬은 부담이 안될까?
일단 매니저류는 어느씬에가도 필요하면 삭제할필요없음 ui도 공통적인건 경우에따라 삭제를 안하고 씬마다 상이하다면 해당씬 ui관리하는 매니저를 만들어서 씬이바뀔때 총괄매니저한테 참조를 넘겨서 사용하면될듯
설계 다 엎어야 겠는데.. 대충 상황은 알겠는데 댓글로 백날 소통해봐야 한번 보는것만 못할듯
참조로 넘기셈 - dc App