출처 :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=275
[유니티 엔진 팁 - 로딩시간 최적화에 대해서]
로딩시간 최적화
- 직감도 좋지만 프로파일러를 적극 활용하는것이 정답입니다.
에디터의 profiler탭을 보면 함수들의 수행시간이 표시되는데
시간을 많이 잡아먹는 부분을 집중적으로 수정하면 됩니다.
- 프로파일러를 확인하지 않았을때 모르고 지나갔던 부분들...
불필요한 물리 오브젝트 제거!
스프라이트 출력용도로만 사용하던 오브젝트에 BoxCollider가 붙어있었는데,
프로파일러를 확인해 보니 이 collider를 재설정 하는데 많은 시간이 소요되더군요.
이부분을 제거하고 나니 로딩속도가 눈에띠게 빨라졌습니다.
- Find류의 함수는 주의할 것.
특히 Update등 매프레임마다 호출되는 곳에서는 GameObject.Find같은 검색함수는
되도록 사용하지 않는것이 좋습니다. 초기화할때 미리 레퍼런스를 갖고 있는것을 권장하고요,
성능좋은 PC에서는 차이가 없어보이지만 모바일에서는 확연한 차이를 발생시킵니다.
- 릴리즈 전 Debug.Log 지우기.
릴리즈 할때는 Debug.Log등의 로그출력부분은 모두 제거하는것이 좋습니다.
로그 남기는것 자체가 프레임에 영향을 주기 때문이죠.
예)
//Debug.Log("[ERROR] " + msg); // 이런 문자열 합성코드가 들어있으면 가비지 컬렉터의
영향을 받습니다.
그리고 Debug.Log는 콘솔이나 파일로 기록을 남기기 때문에 속도가 굉장히 느리죠.
- 유니티 로딩 시스템 이해
아이폰이나 안드로이드용 유니티 어플을 실행해보면 다음과 같은 순서로 진행됩니다.
1) 어플실행 -> 2) 유니티 로고 출력 -> 3) 게임화면
"2)번 유니티 로고 출력"시 씬에 올라와 있는 오브젝트들을 모두 로딩하게 됩니다.
이때에는 로고 이미지 한장만 랜더링 할 수 있는 상태이기 때문에
로딩 진행상황등을 표시 하기가 어렵습니다(스크립트로 제어가 불가능함).
따라서 이부분을 빨리 지나가게 한 뒤 "3)번 게임화면"에 들어왔을때
별도의 로딩화면을 만들어 동적으로 로딩하도록 하는 시스템을 갖추는것이 좋아 보이더군요.
'잡다한것들전부 > 팁' 카테고리의 다른 글
| [펌] 유니티 엔진 팁 - 광고 모듈 붙이기 (0) | 2014.01.16 |
|---|---|
| [펌] 유니티 엔진 - 오브젝트 풀 시스템 (0) | 2014.01.16 |
| [펌] 유니티 엔진 팁 - 로딩시간 최적화에 대해서 (0) | 2014.01.16 |
| [펌] 유니티 엔진 팁 - 비동기 로딩 흉내내기 (0) | 2014.01.16 |
| [펌] 유니티 엔진 팁 - GUI시스템 (0) | 2014.01.16 |
| [함수] 유니티 함수 Vector3.Lerp에 대해서 알아보자. (0) | 2014.01.12 |
Trackback 0 And
Comment 0


