Physics
- 불필요한 Collision Volume을 최소화한다.
: 복잡한 형태의 오브젝트인 경우에도 가능하면 Box Collider 하나로 충돌 볼륨 설정
- 가능한 간단한 형태의 충돌 볼륨 사용
: 부하 - Mesh Collider > Box Collider > Sphere Collider
- 충돌이 겹치는 경우 유의
: 프레임당 반복해서(많은 경우 3회) 충돌 처리 발생.
- CharacterController 개수가 많은 경우 Performance 저하
: Rigid Body 와 Collider를 사용하면 좋다.
- Fixed Update 함수 최정화
- TimeManager 설정 값 수정
: Edit > Project > Time 메뉴
게임에 맞게 설정하는게 좋다. Fixed Update 등을 조절하여 줄이는 것도 좋은 방법이 될 수 있다.
General
- Caching
: Transform, GetComponent 등은 게임 루프에서 호출하지 않고 캐싱해서 사용
- 매 프레임마다 계산할 필요가 없는 코드들
: GUI 버튼의 상태 체크, AI 등
: 매 10 프레임마다 계산하는 것과 같은 방법으로 호출 회수 최소화
- 미리 계산된 테이블을 사용
: sin/cos/sqrt 등은 비용이 많이 듬 계산 된 Table을 사용하자.
- GC(Garbage Collection)
: Profiler 에서 CPU spike가 심하게 발생하는 경우
: 적절한 곳에서 System.GC.Collect() 를 호출
- 메모리 사용
: Resources.UnloadUnusedAssets 를 호출 불필요한 메모리를 해제한다.
- Instantiate 사용 자제 할 것
: 비용이 비싼 함수이다. 미리 생성해 두고 재활용하는 것이 좋다 (disable/enable)
Profiler
- Unity Profiler를 사용하여 Spike가 발생하는 부분을 관찰해서 조절해야 한다.
-
'디지털 양피지 > Unity3D' 카테고리의 다른 글
Unity3D - Gizmos 활용 (0) | 2015.02.16 |
---|---|
Unity3D - Sorting Layer 사용하기 (0) | 2015.02.16 |
Unity3D - Animation & Mecanim (0) | 2015.02.13 |
Unity3D - Sprite(Sprite Editor) (0) | 2015.02.13 |
Unity Script Basic- 1 (0) | 2015.01.07 |