NGUI를 이용하여 메뉴의 네트워크 로딩 화면을 만들고 있다.
여러 씬에서 자주 사용되는 UI라서 평소대로 프리팹으로 뺐다.
그런데 문제가 메뉴에서가 아니라 게임 안에서 발생했다.
스테이지가 넘어갈 때마다 렉이 평소 이상으로 극심했던 것.
변경 이력을 보고 이것저것 건드려본 결과 문제는 해당 UI때문에 발생한 것임을 알아냈다.
그런데 게임 밖에서만 사용하는 것이 게임 안쪽에서 문제를 일으키는 것이 이해가 안됬다.
게다가 해당 UI의 Awake, Start, Update 모두 로그를 찍었지만 걸리는 것이 없다;;
그래서 프로파일링 해봤다.
프로파일러 화면에서 해당 부분이 예전과 바뀐 것은 BMFont의 생성이었다.
아마 UILabel에서 글씨체로 사용하는 듯 한데, 매번 2천자가 넘는 글자를 불러들이고 있었다.
아무래도 Resources.UnloadUnusedAssets() 함수로 메모리 관리를 할 때 다시 프리팹을 로드하는 모양이었다.
(이 함수를 안쓰면 아이폰에서 금방 뻗어버린다)
사실 해당 UI의 생성자는 트리구조에는 없었지만 그때마다 호출되는 것을 목격했다.
(에디팅 모드에서도 호출된다....)
쩝.. 프리팹은 한번이라도 로드하면 뭔가 계속 리프레쉬를 하는건가보다.
보니 다른 스크립트가 먹여진 프리팹들 역시 한번이라도 로드된 것은 계속 프로파일러에 보였다.
결국 울며 겨자먹기로 일일이 씬마다 로딩 UI를 박아줬다...