배운 내용
최적화
코드 최적화
- Update의 사용
- 주의(할당, 컴포넌트)
- ex) Class Instance();, Instantiate(Resource.Load, new GameObject) → Start나 Awake 등에서 초기화 해주어야 함(미리 메모리에 올려놓지 않으면 파일 시스템에서 메모리에 올리는 작업을 반복하게 된다.)
- ex) AddComponent, GetComponent 등 지양 → 전역변수로 만들어서 Start나 Awake 등에서 초기화
- Resources.Load, SceneManager.Load의 Async (비동기)
- LoadAsync, LoadAsync → 빨라지지 않는다
- Enumerator로 떨어짐 (isDone 등 프로퍼티)
- ex) 로딩 창 - 로드 작업은 파일 시스템에서 메모리에올리는 경우가 대부분(여기서 렉이 발생 할 수밖에 없음)
- yield return (job);
- WaitForSeconds();
- AsyncOperation
- 빠르기 - 유저편의성
- SceneLoadAsync Mode Additive (다음 씬 미리 추가) but 그냥 씬 로드시 유저가 끊기는 게 보임
- LoadAsync, LoadAsync → 빨라지지 않는다
- requestedFrameRate (최대 상한선 FPS)
- 평상시에 유지하려는 경향
- Cinematic
- 정지화면 → SRPG - 프레임이 높을 필요가 없음(10 ~ 15)
- 어차피 낮을건데 왜해요? ⇒ CPU의 Optimizations
- CPU 온도 - CPU 안정성 (회로가 탐)
- 쓰로틀링(제조사) - CPU의 속도를 낮춤
- superUser나 탈옥 등을 통해 풀면 오버클럭을 할 수 있음
- 안 쓸 때는 최대한 온도를 낮춰놓자
- 어차피 낮을건데 왜해요? ⇒ CPU의 Optimizations
GPU 최적화
- SOC 칩 있으면 CPU GPU 이동 효율 좋음 (대신 연산능력이 안 좋음 - 크기가 작음)
- 대신 영상편집 등은 많이 따라왔음
- Iphone - Mali (GPU칩)
- Android - Snapdragon, Mali … (GPU 칩)
- GPU에 따라 프로파일러가 따로 있음(GPU 제조사마다 프로그램이 다름)
- 메모리에 텍스처가 올라간 방식이 나옴 - 제조사 쪽 직접 가서 볼 때
- 가끔 봐야할 경우가 생김 (유니티에선 SystemInfo - 간단한 그래프)
메모리 최적화
UI, 2D 최적화
- Atlas Packing, Font Paking
- 메모리 낭비를 막기 위해 (들어갈 때 패딩 붙이는 연산이 들고, 뺄 때 패딩 뗴는 연산이 듬)
- texture 가 POT로 떨어짐(Power of two - 2의 n승 * NPOT는 NotPOT인 것)
- texture inspector 옵션 강제로 낮출 때 down 올려야할 때 Up
- Sprite Packer
- Full Rect : 마진 값이 들어간 이미지
- Tight : 정방형 이미지일 때 씀
- 압축 POT
- Sprite Packer
- 한 번에 관리하려는 용도
- RGB, RGBA를 같이 압축하면 RGB기준으로 압축되어 A가 없어질 수 있어서 따로 압축해줘야 됨
- 한 번에 관리하려는 용도
- Sprite Packer
- UI는 Camera Culling(카메라 시야에 안들어 올 때 안 그리는 것)이 적용이 안 됨
- Graphic RayCaster - Touch가 필요 없으면 꺼주기
- 모바일 환경에서의 리소스 최적화
한 주 후기
이번 주에는 최적화에 대해서 배웠다. 요즘에 PC는 다들 잘 나와서 크게 최적화가 필요 없을 수 있겠지만 모바일 환경이라면 최적화가 거의 필수적이다. 그래서 이번에 강의를 더 열심히 들었던 것 같다. 이번 강의를 듣는데 좀 아쉬웠던 부분이 이론적인 내용과 예시가 많았기 때문에 직접적으로 해보면서 느끼는 것은 덜해서 전체적으로 습득하지는 못했던 것 같다. 프로젝트를 마무리하는 부분에 있어서 그 때마다 최적화 기법이 다르니 실습을 하기도 쉽지 않았기 때문인 것 같긴 하다. 지금 하고있는 프로젝트의 마무리 단계에서 적용해보고 다시 이런 내용들을 실습해보는 과정을 겪어야 확실하게 이해할 수 있을 것 같다.
그래도 이번 최적화에 대한 내용은 어디서 배우기 힘든 내용들이라는 것에 되게 만족했다. 다음 주도 파이팅!
본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.
'유데미 스타터스 유니티 개발자 1기' 카테고리의 다른 글
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 27주차(개발) (0) | 2022.12.25 |
---|---|
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 26주차(개발) (0) | 2022.12.22 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 24주차(개발) (1) | 2022.12.03 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 23주차(개발) (0) | 2022.11.27 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 22주차(개발) (0) | 2022.11.20 |