하루종일 리팩토링 하기로 결정.
타워디펜스 유니티 탬플릿 뜯어보고
계속 구글링 해본 결과 내 구조가 아니라 UI를 뭉치뭉치로 프리팹화 해서 씬 넘어올때마다 만들어주는 듯.
알고있다시피 awake나 start등에서의 생성이나 find는 크게 문제될 것은 없으니까
데미지 폰트 만든것도 오브젝트 풀링하고 몬스터도 풀링하고 그러면 될 것 같다.
==================
Unity의 탬플릿인 Tower Defense를 뜯어보았다
(에셋 스토어에서 받을 수 있음!)
메인 메뉴에서 지속성 있는 싱글톤(직역, DontDestroy를 하는 Singleton Pattern을 사용함)인
게임 매니저를 만든다.
게임 매니저는
1. LevelList
2. 스테이지의 클리어
3. 현재 씬 알기
정도를 제공한다.
메인 메뉴에서 버튼으로 레벨을 클릭하면, ChangeScenes()함수를 통해서 씬을 불러온다.
씬마다 LevelManager(지속성 있는 싱글톤이 아니고, 씬마다 다 들어가줌. 그 씬이 끝나면 null로)가 있고,
모든 UI들은 prefab화를 통해서 관리하는 것 같다.
-> 스택오버플로우나 유니티 포럼을 뒤져봤을때도, UI를 뭉텅이로 프리팹화해서 사용한다는 사람들이 많이 보였다.
레벨 디자인을 위해, 다르게 제공되는 초기 재화의 경우에는 linq로 데이터를 만들어서
start()부분에서 연동해준다.
음악 데이터는 Json을 사용하고 안에서만 쓰는 밸런스적인 데이터는 linq를 사용하는것으로 보였다.
내가 필요한 부분만 보느라고 얼마 못봐서 이정도만
====================
나의 경우는 UIMgr에서 거의 gamemanager의 역할을 하고 있었기 때문에
위의 코드를 차용해서 levelmanager를 씬마다 두고, 거기서 밸런스 관리(플레이어의 재화 획득량, 획득 시간, 최대 소환 가능 몬스터 수, 소환 수 등등)를 하는 변수를 넣고
UIMgr은 정말로 데이터를 받아와서, UI에 적용만 시켜주는 것으로 다 바꿔주었다.
UIMgr을 적용이 끝났고, SummonMgr만 조금 더 바꿔주면 될 것 같다. 온전하게 돌아감.
프로퍼티 너무 어색한데 계속 써보려고 노력중이다
하지만 안써봐서 계속 버그 터져서 구글링 계속 하는 중
유니티의 시뮬레이터 기능 너무 편함!
빌드 시켜서 보는 화면과 일치하게 돌아간다