출처 : http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&page=1&sn1=&divpage=1&sn=on&ss=on&sc=on&keyword=%C0%AF%B4%CF%C6%BC&select_arrange=last_comment&desc=desc&no=276
[유니티 엔진 팁 - 비동기 로딩 흉내내기] 비동기 로딩 흉내내기. - 유니티에서는 멀티쓰레드 로딩을 지원하지 않습니다. Resources.Load같은 유니티 함수들은 메인쓰레드에서만 작동하게 되어 있다고 하네요. - 비동기 로딩을 흉내내는 방법은 몇가지가 있는데 1) assetbundle 시스템을 이용하는 방법, 2) scene의 background로딩 기능을 이용하는 방법, 3) 코루틴을 사용하여 비슷하게 흉내내는 방법등이 있습니다. 1) assetbundle은 리소스가 바뀔때마다 매번 만들어 줘야 하는 번거로움이 있습니다. 2) scene의 background로딩 기능은 메뉴얼 대로 했는데도 제대로 작동하지 않는것 같더군요. background로딩을 걸어놓고 다른 scene의 OnGUI등에서 매프레임마다 변수를 출력해봤는데 자연스럽게 랜더링 되지 않고 중간중간 블럭이 걸렸습니다. 3) 코루틴을 사용하여 로딩하는 방식 : 한번에 로드하는 오브젝트의 크기를 최소화 하여 잘게 나눈 후 "로딩 -> yield -> 로딩 -> yield" 를 반복하여 처리하였습니다. - yield를 할때 화면 랜더링이 한번 이루어지기 때문에 비동기 로딩처럼 보일 수가 있죠. - 테스트결과 랜더링이 블럭되는 시간이 짧기 때문에 자연스러움은 있지만, 전체적인 로딩시간은 오히려 더 길어지는 문제가 발생하였습니다! 아마도 화면 랜더링을 하는 시간 때문인지 yield후 다음 오브젝트 로딩까지의 딜레이가 조금씩 생기더군요. 이런것들이 여러개 모이니 전체적인 로딩시간이 몇초정도 더 길어지게 되었습니다. (PC에선 몇초가 큰 의미 없겠지만 모바일에선 길게 느껴지더군요.ㅠ_ㅠ) 결국 GUI, sound, object등 큰 줄기로만 구분하여 중간중간 로딩 진행상황만 표시해주는것으로 처리하였는데, 이렇게만 해줘도 중간에 무한 대기 상태로 빠지지 않기 때문에 유저입장에서 볼 때 로딩이 약간 빨라진듯한 느낌이 들게 됩니다. |
'잡다한것들전부 > 팁' 카테고리의 다른 글
| [펌] 유니티 엔진 - 오브젝트 풀 시스템 (0) | 2014.01.16 |
|---|---|
| [펌] 유니티 엔진 팁 - 로딩시간 최적화에 대해서 (0) | 2014.01.16 |
| [펌] 유니티 엔진 팁 - 비동기 로딩 흉내내기 (0) | 2014.01.16 |
| [펌] 유니티 엔진 팁 - GUI시스템 (0) | 2014.01.16 |
| [함수] 유니티 함수 Vector3.Lerp에 대해서 알아보자. (0) | 2014.01.12 |
| 유니티 Vector3 를 상수 선언 하고 싶을때. (0) | 2014.01.09 |
Trackback 0 And
Comment 0


