배운 내용

최적화

코드 최적화

  • 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 그냥 씬 로드시 유저가 끊기는 게 보임
  • requestedFrameRate (최대 상한선 FPS)
    • 평상시에 유지하려는 경향
    • Cinematic
    • 정지화면 → SRPG - 프레임이 높을 필요가 없음(10 ~ 15)
      • 어차피 낮을건데 왜해요? ⇒ CPU의 Optimizations
        • CPU 온도 - CPU 안정성 (회로가 탐)
        • 쓰로틀링(제조사) - CPU의 속도를 낮춤
          • superUser나 탈옥 등을 통해 풀면 오버클럭을 할 수 있음
        • 안 쓸 때는 최대한 온도를 낮춰놓자

 

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가 없어질 수 있어서 따로 압축해줘야 됨
  • UI는 Camera Culling(카메라 시야에 안들어 올 때 안 그리는 것)이 적용이 안 됨
  • Graphic RayCaster - Touch가 필요 없으면 꺼주기

- 모바일 환경에서의 리소스 최적화

 

한 주 후기

 이번 주에는 최적화에 대해서 배웠다. 요즘에 PC는 다들 잘 나와서 크게 최적화가 필요 없을 수 있겠지만 모바일 환경이라면 최적화가 거의 필수적이다. 그래서 이번에 강의를 더 열심히 들었던 것 같다. 이번 강의를 듣는데 좀 아쉬웠던 부분이 이론적인 내용과 예시가 많았기 때문에 직접적으로 해보면서 느끼는 것은 덜해서 전체적으로 습득하지는 못했던 것 같다. 프로젝트를 마무리하는 부분에 있어서 그 때마다 최적화 기법이 다르니 실습을 하기도 쉽지 않았기 때문인 것 같긴 하다. 지금 하고있는 프로젝트의 마무리 단계에서 적용해보고 다시 이런 내용들을 실습해보는 과정을 겪어야 확실하게 이해할 수 있을 것 같다.

 그래도 이번 최적화에 대한 내용은 어디서 배우기 힘든 내용들이라는 것에 되게 만족했다. 다음 주도 파이팅!

 

 

유데미코리아 바로가기

본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.

 

+ Recent posts