일주일 내내 골머리를 앓고 있던 UI 문제를 해결했다!
문제점 및 해결방안
◎ 씬을 전환할때 (TitleScene에서 GameScene으로) UI매니저에 담겨있는 정보들이 쓸모없어지는 문제
- 일단 UI매니저가 씬 이동에 큰 영향을 받아서는 안되기 때문에, 별도의 씬에서 관리를 해주는게 필요하다. 그래서 DontDestroyOnLoad로 파괴되지 않게 설정해준뒤, Manager들을 관리하는 ManagerScene에 넣어서 관리해주었다.
- 그리고 UI매니저에 한 씬의 Canvas를 할당하는게 아니라, 씬이 전환될때마다 그 씬에 존재하는 Canvas를 할당해주어야 한다. 그러므로 FindObjectOfType<Canvas>()를 써서 Canvas를 찾아주는 과정을 추가한다.
- Canvas를 찾고 난 뒤 UI리스트에 있는 UI들 중 필요로 하는 UI를 생성하는 코드를 작성해주면 된다!
사실 되게 간단한 문제였다. 할당이 안되어있다면 새로이 할당을 해주면 그만이었다. 기존의 방식은 코드를 실행할때마다 필요한 요소들을 할당해주어 굉장히 비효율적이었다면 이번엔 캔버스를 할당하고 그 캔버스에 필요한 UI를 필요에 따라 생성해주고, 그 UI 자체 코드에서 작동하게 하면 되는것이었다.
며칠간의 세션을 통해 UI와 씬에 대한 개념을 쏙쏙 늘려가고 있다. 내일은 플레이어의 데이터를 저장하고 그것을 UI에 출력하는 작업 및 캐릭터, 덱을 담당하신 팀원분과 협업을 해볼까 한다.
할 수 있을지는 모르지만 가능한데까지는 해봐야지 싶다.
화이팅..!