행복한 연어의 이야기

(Unity) 안드로이드 프로파일러 본문

IT/Unity

(Unity) 안드로이드 프로파일러

해피살몬 2020. 1. 24. 19:56

2018.3.0f2 버전으로 테스트 하였습니다.

준비

ADB(Android Debug Bridge) 설치 (Android Studio 를 설치했다면 기본적으로 다운로드 되어있음)
환경변수 설정

순서

  1. SDK 다운로드
    수동연결시 2~4번 실행 필요, 유니티 자동연결시 바로 5번으로(자동연결이 안되면 수동으로 해보자)
  2. 명령프롬프트창 실행, adb 있는 폴더 경로 입력 ex) cd AppData\Local\Android\Sdk\platform-tools
  3. 확인을 위해 adb devices 입력
    • devices 가 나오지 않는다면 폰에서 개발자모드를 킨다. (그래도 안되면 폰,컴 재부팅, 아래 방법 실행 시도)
      3-1)다른기기 혹은 유니티 버전 변경시 adb kill-server 입력, adb start-server 입력 을 해본다.
  4. adb forward tcp:34999 localabstract:Unity-PackageName 입력
    • PackageName은 player setting -> Idenrificatrion 안에 PackageName(디폴트 값 수정 필요)
  5. MONO 말고 IL2CPP로 변경해야한다. (3.0 버전에서 튕김현상 있음)
  6. 유니티 빌드 세팅으로 돌아와서 DevelopMent Build 와 Autoconnect Profiler 체크
  7. Profiler 를 키고 Editor 라고 되어 있는 항목에서 Autoconnected Player 로 변경
  8. build Setting 에서 Build and run 실행

프로 파일러 보는 법

왼쪽에 표시되는 데로 초당 16ms이내로 시간이 소요되는 것을 목표로 해야 60프레임이 나온다.
일반 적인 경우 WaitForTargetFPS와 Gfx.WaitForPresent가 가장 눈에 보인다.
WaitForTargetFPS의 경우 동기화와 관련되어 있는데 60프레임을 만들어주기 위해 그냥 대기하는 시간이다.
Gfx.WaitForPresent의 경우 GPU의 소요 시간이 CPU를 넘겨버리면 CPU는 GPU가 끝날때까지 대기하는데 그 때 발생하는 시간이다.

UnityEngine.Profiler.BeginSample("Sample");
//내용
UnityEngine.Profiler.EndSample();
을 사용하면 프로파일러에 그 내용에 함수에 대한 로그가 찍히게 된다. (다만 저 함수는 좀 무겁다. 실제 배포할때는 지워야한다.)

기타 Unity 프로파일러 팁

오픈소스

  1. 메모리 프로파일러 활용 하면 편함

사운드

  1. 아이폰을 염두해 두고 있다면 mp3 사용

메시

  1. Read/Write Enabled 는 왠만하면 꺼두자

기본적으로 제가 이해하고 조사한 내용을 적었습니다.

혹시라도 잘못되어 있으면 댓글로 알려주시면 감사하겠습니다!

Comments