iOS에서 성능 최적화
빌트인 프로파일러로 성능 측정

iOS 관련 최적화

이 페이지에서는 iOS 기기 배포에만 해당되는 최적화에 대해 자세하게 설명합니다.

스크립트 호출 최적화

UnityEngine 네임스페이스의 함수는 대부분 C/C++로 구현됩니다. Mono 스크립트에서 C/C++ 함수를 호출하면 성능이 저하되므로, iOS 스크립트 호출 최적화 설정을 사용하면 프레임당 약 1–4밀리초를 절약할 수 있습니다.

iOS에서 바람직한 개발 방법은 내부적으로든 try/catch 블록을 통해서든 예외 처리에 의존하지 않는 것입니다. 기본 옵션인 Slow and Safe 옵션을 사용하면 Unity는 기기에서 발생하는 모든 예외를 발견되고 스택 추적을 제공합니다. Fast but no Exceptions 옵션을 사용하면 발생하는 모든 예외가 게임과 충돌하고 스택 추적이 제공되지 않습니다. 또한 Unity는 AppDomain.UnhandledException 이벤트를 발생시켜 프로젝트별 코드가 예외 정보에 액세스할 수 있도록 허용합니다.

Mono 스크립팅 백엔드를 사용할 경우 프로세서가 예외를 처리하는 데 성능을 소모하지 않으므로 실행 속도가 빨라집니다. IL2CPP 스크립팅 백엔드를 사용할 때는 Fast but no Exceptions 옵션을 선택해도 아무런 성능상 이점은 없습니다. 단, 게임을 릴리스할 때는 Fast but no Exceptions 옵션을 사용하여 퍼블리시하는 것이 가장 좋습니다.

가속 센서 프로세싱 빈도 조정

가속 센서 입력이 너무 자주 처리되는 경우, 게임의 전반적인 성능이 저하되는 원인이 될 수 있습니다. Unity iOS 애플리케이션은 기본적으로 가속 센서를 초당 60번 샘플링합니다. 가속 센서 샘플링 빈도를 낮추면 성능이 다소 향상될 수 있고, 가속 센서 입력을 사용하지 않는 게임의 경우 빈도를 0으로 설정할 수도 있습니다. Accelerometer Frequency 설정은 iOS 플랫폼을 위한 플레이어 설정Other Settings 패널에서 변경할 수 있습니다.

증분 빌드

IL2CPP 스크립팅 백엔드를 통해 생성되는 C++ 코드는 점진적으로 업데이트할 수 있으므로, 증분 C++ 빌드 시스템은 변경 사항 소스 파일만 컴파일할 수 있습니다. 이 방법으로 IL2CPP 스크립팅 백엔드를 사용하여 반복 시간을 크게 단축할 수 있습니다.

증분 빌드를 사용하려면 Build Settings 다이얼로그에서 Build를 선택한 후 Append 옵션을 선택합니다. Replace 옵션을 선택하면 클린 빌드가 수행됩니다.

프레임 속도 설정

Unity iOS를 사용하면 애플리케이션이 렌더링 루프 실행을 시도하는 빈도를 변경할 수 있습니다. 기본 설정은 초당 30프레임입니다. 이 숫자를 낮춰서 배터리 소모를 줄일 수 있지만, 그러면 당연히 프레임 업데이트가 감소하는 대가를 치러야 합니다. 반대로 프레임 속도를 높여서 터치 입력이나 가속 센서 등 다른 작업보다 렌더링에 더 높은 우선 순위를 부여할 수도 있습니다. 프레임 속도를 다양하게 선택하고 실험해 보면서 게임플레이에 미치는 영향을 파악해야 합니다.

애플리케이션이 많은 연산이나 렌더링을 수반하고 예를 들어 초당 15프레임만 유지할 수 있는 경우 원하는 프레임 속도를 15보다 높게 설정해도 성능이 향상되지 않습니다. 더 높은 프레임 속도를 얻을 수 있으려면 애플리케이션을 충분히 최적화해야 합니다.

원하는 프레임 속도를 설정하려면 Application.targetFrameRate를 변경합니다.


  • 2018–06–14 일부 편집 리뷰를 거쳐 페이지 수정됨
iOS에서 성능 최적화
빌트인 프로파일러로 성능 측정