Version: 2017.4
iOS 하드웨어 가이드
iOS 2D 텍스처 오버라이드

iOS 플레이어 설정

이 페이지에서는 iOS 관련 Player Settings 에 대해 자세하게 설명합니다. 일반 플레이어 설정에 대한 설명은 여기에서 확인할 수 있습니다.

Unity iOS를 사용하려면 iOS 7.0 이상이 필요합니다. Unity는 iOS 6.0 이하 버전을 지원하지 않습니다.

아이콘

참고: 아이콘 텍스처가 누락되면 가장 크기가 비슷한 아이콘 텍스처가 그에 맞게 조정됩니다(해상도가 더 높은 텍스처가 우선 순위를 가짐).

프로퍼티: 기능:
애플리케이션 아이콘(Application icons) 각 iOS 기기에서 앱에 표시할 커스텀 아이콘을 할당합니다.
Spotlight icons 각 iOS 기기에서 게임의 스포트라이트 검색 결과에 표시할 커스텀 아이콘을 할당합니다.
Settings icons 각 iOS 기기에서 휴대폰의 메인 설정 페이지에 표시할 커스텀 아이콘을 할당합니다.
Notification icons 각 iOS 디바이스에서 게임 알림을 전송할 때 표시할 커스텀 아이콘을 할당합니다.
Marketing icons 각 iOS 기기에서 앱 스토어의 게임에 표시할 커스텀 아이콘을 할당합니다.

해상도 및 프레젠테이션

프로퍼티: 기능:
해상도 스케일링(Resolution Scaling)
해상도 스케일링 모드(Resolution Scaling Mode) 스케일링을 네이티브 화면 해상도 이하로 설정합니다.
고정 DPI(FixedDPI) 로 설정하면 기기의 화면 해상도를 네이티브 해상도 미만으로 조정하고 타겟 DPI(Target DPI) 프로퍼티를 표시할 수 있습니다. 이를 통해 성능과 배터리 수명을 최적화하거나 특정 DPI 설정을 맞출 수 있습니다.
비활성화(Disabled) 로 설정하면 스케일링이 적용되지 않고, 게임이 네이티브 화면 해상도로 렌더링됩니다.
타겟 DPI(Target DPI) 게임 화면의 타겟 DPI를 설정합니다. 기기의 네이티브 화면 DPI가 이 값보다 큰 경우 게임 화면은 이 설정을 맞추기 위해 하향 조정됩니다. 이 옵션은 해상도 스케일링 모드(Resolution Scaling Mode)고정 DPI(Fixed DPI) 로 설정한 경우에만 표시됩니다.
Orientation
Default Orientation
이 설정은 iOS 및 Android 디바이스에서 동일합니다.
게임의 화면 방향입니다. 다음 옵션이 있습니다.
Portrait(하단에 홈 버튼),
Portrait Upside Down(상단에 홈 버튼),
Landscape Left(오른쪽에 홈 버튼),
Landscape Right(왼쪽에 홈 버튼), 그리고
Auto Rotation(디바이스 방향에 따라 화면 방향 변경)
Use Animated Autorotation 방향을 변경할 때 단순히 전환만 하지 않고 화면 회전에 애니매이션 효과를 적용하려면 이 상자를 선택합니다. Default OrientationAuto Rotation 으로 설정된 경우에만 표시됩니다.
Allowed Orientations for Auto Rotation(Default OrientationAuto Rotation 으로 설정된 경우에만 표시됨)
Portrait 포트레이트 방향을 사용할 수 있습니다.
Portrait Upside Down 상하 반전된 세로 방향을 사용합니다.
Landscape Right 오른쪽 가로 방향(홈 버튼이 왼쪽 에 위치)을 사용합니다.
Landscape Left 풍경 왼쪽 방향(홈 버튼이 오른쪽 에 위치)을 사용할 수 있습니다.
멀티태스킹 지원
Requires Fullscreen 게임을 전체 화면으로 표시해야 하는 경우 이 상자를 선택합니다.
** Status Bar**
Status Bar Hidden 애플리케이션 실행 시 상태 표시줄을 숨기려면 이 상자를 선택합니다.
Status Bar Style 애플리케이션 실행 시 표시되는 상태 표시줄의 스타일을 정의합니다. 옵션은 Default, Black Translucent, Black Opaque 입니다.
Disable Depth and Stencil 뎁스 및 스텐실 버퍼를 비활성화하려면 이 상자를 선택합니다.
Show Loading Indicator 로딩 인디케이터를 표시할 방법을 선택합니다. 옵션은 Don’t Show, White Large, White, Gray 입니다.

스플래시 이미지

iOS에서 스플래시 이미지를 구현하는 두 가지 방법은 Launch ImageLaunch Screen 입니다.

실행 이미지

Launch Images 는 화면 전체를 차지하는 정적 스플래시 화면 이미지입니다.

iOS 7을 사용하는 디바이스에는 Launch Images 실행 화면 옵션만 있습니다. iOS 7.0 이전 버전은 지원되지 않습니다. iOS 8 이상을 사용하는 디바이스에서는 Launch Images 또는 Launch Screens 중에서 하나를 사용할 수 있습니다.

Launch Images 는 에셋 카탈로그(Images.xcassets/LaunchImage)에 정의되어 있습니다. 항상 지원되는 각 크기 및 방향 조합마다 Launch Images 를 추가해야 합니다.

iPhone 6+만 가로 방향을 지원합니다. 나머지 iPhone에서는 세로 방향만 사용할 수 있습니다. 실행 이미지의 선택 순서는 다음과 같습니다.

  • 텍스처가 설정된 경우 특정 Launch Image 오버라이드
  • 블루블랙 컬러인 디폴트 Unity 스플래시 화면 실행 이미지

빌드의 모든 Launch Images 를 설정해야 합니다.

실행 화면

Launch Screen 은 iOS가 스플래시 화면을 디바이스에 동적으로 만드는 데 사용하는 XIB 파일입니다.

Launch Screens 에는 제한이 있습니다. 즉, iPad 기기 방향에 따라 일부 콘텐츠를 표시할 수 없습니다. 모든 iPhone은 랜드스케이프 Launch Screens 를 지원합니다. 하지만 iOS의 버그로 인해 특정 iOS 버전에서 Landscape LeftLandscape Right 대신 표시됩니다.

참고: 크로스 플랫폼 Splash Image 프로퍼티에 대한 내용은 스플래시 화면 설정을 참조하십시오.

프로퍼티: 기능:
Mobile Splash Screen iOS 스플래시 화면에 사용할 텍스처를 지정합니다. 일반적인 스플래시 화면 크기는 320x480입니다. (이는 Android와 iOS 간에 공유됩니다.)
iPhone 3.5\“/Retina|iOS 3.5\“ 레티나 스플래시 화면에 사용할 텍스처를 지정합니다. 스플래시 화면 크기는 640x960입니다.| |iPhone 4\"/Retina|iOS 4\” 레티나 스플래시 화면에 사용할 텍스처를 지정합니다. 스플래시 화면 크기는 640x1136입니다.| |iPhone 4.7\”/Retina iOS 4.7\“ 레티나 스플래시 화면에 사용할 텍스처를 지정합니다. 스플래시 화면 크기는 750x1334입니다.| |iPhone 5.5\"/Retina|iOS 5.5\\” 레티나 스플래시 화면에 사용할 텍스처를 지정합니다. 스플래시 화면 크기는 1242x2208입니다.
iPhone 5.5\" Landscape/Retina iOS 5.5\" 가로/레티나 스플래시 화면에 사용할 텍스처를 지정합니다. 스플래시 화면 크기는 2208x1242입니다.
iPhone X\Retina iPhone X 레티나 스플래시 화면에 사용할 텍스처를 지정합니다. 스플래시 화면 크기는 1125x2436입니다.
iPhone X Landscape\Retina iPhone X 랜드스케이프/레티나 스플래시 화면에 사용할 텍스처를 지정합니다. 스플래시 화면 크기는 2436x1125입니다.
iPad Portrait iPad 세로 방향 스플래시 화면으로 사용할 텍스처를 지정합니다. 표준 스플래시 화면 크기는 768x1024입니다.
iPad Landscape iPad 가로 방향 스플래시 화면으로 사용할 텍스처를 지정합니다. 표준 스플래시 화면 크기는 1024x768입니다.
iPad Portrait/Retina iPad 레티나 가로 방향 스플래시 화면으로 사용할 텍스처를 지정합니다. 표준 스플래시 화면 크기는 1536x2048입니다.
iPad Landscape/Retina iPad 레티나 가로 방향 스플래시 화면으로 사용할 텍스처를 지정합니다. 표준 스플래시 화면 크기는 2048x1536입니다.
Launch Screen type 실행 화면 타입을 선택할 수 있습니다.
- None 실행 이미지만 사용하는 것처럼 동작합니다.
- Default 실행 이미지와 매우 비슷한 실행 화면입니다. 하나의 이미지를 포트레이트와 랜드스케이프에 대해 선택합니다. 선택 순서는 iPhone 6+ 실행 이미지, 공유된 모바일 실행 이미지, iPhone 6+용 기본 Unity 실행 이미지입니다. 이 이미지들은 Aspect-Fill 모드를 통해 표시됩니다.
- Image with background, relative size 중앙에 정렬된 이미지가 표시되고 나머지 영역은 단색으로 채웁니다. 이미지 크기는 화면 크기의 사용자 지정 비율이며, 더 작은 크기로 계산됩니다(랜드스케이프 방향에서 수직, 포트레이트 방향에서 수평). 또한 사용자는 포트레이트 및 랜드스케이프 방향에 대한 배경 색상과 이미지도 지정합니다. 이미지 선택 순서는 사용자 지정 이미지, 공유된 모바일 실행 이미지, iPhone 6+용 기본 Unity 실행 이미지입니다. 이 이미지들은 Aspect-Fill 모드를 통해 표시됩니다.
- Image with background, constant size 상대 크기(relative size) 옵션과 같지만, 이미지 크기가 사용자가 지정한 포인트 수로 정의됩니다.
- Custom Xib 위치에 관계 없이 사용자가 지정한 XIB 파일입니다.

Unity Personal 에디션에서 Unity 스플래시 화면은 선택한 스플래시 화면과 더불어 엔진을 초기화할 때 표시됩니다.

디버깅 및 크래시 보고

프로퍼티: 기능:
Enable Internal Profiler (Deprecated) 애플리케이션의 성능 데이터를 수집하고 리포트를 콘솔로 출력하는 내부 프로파일러를 활성화합니다. 리포트에는 각 Unity 서브시스템이 각 프레임을 실행하는 데 소요된 밀리초 수가 포함됩니다. 30프레임의 평균 데이터가 사용됩니다.
On .Net UnhandledException .NET 처리되지 않은 예외에 대해 취하는 조치입니다. 옵션은 Crash(애플리케이션에 크래시를 발생시켜 iOS가 크래시 보고서를 생성하여 앱 사용자가 iTunes에 제출하고 개발자가 검토하게 함)와 Silent Exit(애플리케이션이 정상적으로 종료됨)입니다.
Log ObjC uncaught exceptions 커스텀 Objective-C를 확인할 수 없는 예외 핸들러를 활성화하여 예외 정보를 콘솔로 출력합니다.
Enable Crash Report API 커스텀 크래시 리포터가 크래시를 캡처하게 합니다. 크래시 로그는 CrashReport API를 통해 스크립트에 제공됩니다.

기타 설정

프로퍼티: 기능:
Rendering
Color Space Unity가 Gamma 색 공간 또는 Linear 색 공간을 렌더링에 사용하도록 만듭니다. 자세한 내용은 리니어 렌더링 문서를 참조하십시오. Linear 색 공간은 Metal 그래픽스 API에서만 지원됩니다.
Automatic Graphics API 사용할 그래픽스 API를 선택할 수 있습니다. 확인란을 선택하면 Unity가 메탈을 포함시키고, 메탈이 지원되지 않는 디바이스를 위해 GLES2를 백업으로 포함시킵니다. 확인란을 선택하지 않으면 그래픽스 API를 수동으로 선택하고 순서를 바꿀 수 있습니다. API를 수동으로 하나만 선택하면 앱의 info.plist가 조정되어 해당 앱 스토어 제약으로 이어집니다.
Metal Editor Support Unity 에디터가 Metal API를 사용하도록 만들고, Metal API를 타게팅을 위한 더 빠른 셰이더 반복을 이용할 수 있게 됩니다. Metal API Validation 을 사용하면 그래픽스 관련 오류를 초기에 감지할 수 있지만, 성능 저하가 발생할 수 있습니다. 자세한 내용은 Metal API 확인을 참조하십시오.
Static Batching 빌드에 정적 배칭을 사용할 때 설정합니다(디폴트로 활성화됨).
Dynamic Batching 빌드에서 동적 배칭을 사용하도록 설정합니다.
GPU Skinning DX11/ES3 GPU 스키닝 활성화 여부를 설정합니다.
Identification
Bundle Identifier Apple Developer Network 계정의 인증서를 프로비저닝하는 데 사용되는 문자열입니다. (이는 Android와 iOS 간에 공유됩니다.)
Bundle Version 번들의 반복 횟수(릴리스되거나 릴리스되지 않음)를 식별하는 번들의 빌드 버전 번호를 지정합니다. 버전은 점으로 구분된 숫자가 포함된 문자열의 일반적인 포맷으로 지정됩니다(예: 4.3.2).
Build 여기에 빌드 번호를 입력하면 제작한 빌드 수를 추적할 수 있습니다.
iOS Developer Team ID Apple 개발자 팀 ID를 사용하여 이 프로퍼티를 설정합니다. Apple 개발자 웹사이트의 Account > Membership에서 이 프로퍼티를 찾을 수 있습니다. 이 프로퍼티는 생성된 Xcode 프로젝트의 팀 ID를 설정하므로, 개발자는 빌드 및 실행 기능을 사용할 수 있습니다. 앱이 자동으로 서명되도록 하려면 여기서 Apple 개발자 팀 ID를 설정해야 합니다.
Configuration
Scripting Backend IL2CPP 및 Mono 스크립팅 백엔드 간에 선택할 수 있습니다. 기본값은 IL2CPP이며, 대부분의 일반적인 상황에서는 과거에 사용되던 Mono 백엔드로 전환할 필요가 없습니다. IL2CPP와 관련된 버그가 발생한 경우가 아니라면 Mono를 선택하지 않아야 합니다. Mono 빌드는 앱 스토어에서 더 이상 허용되지 않고, Mono는 iOS 11 이상에서 지원되지 않습니다.
Api Compatibility Level 액티브 .NET API 프로파일을 지정합니다. 아래를 참조하십시오.
- .Net 2.0 .NET 2.0 라이브러리입니다. .NET 호환성 최대, 파일 크기 최대
- .Net 2.0 Subset 전체 .NET 호환성의 부분 집합, 파일 크기 작음
Use on Demand Resource 활성화하면 온디맨드 리소스를 사용할 수 있습니다.
Accelerometer Frequency 가속 센서의 샘플링 빈도를 지정할 수 있습니다. 제공되는 옵션은 Disabled(샘플링 안 함), 15Hz, 30Hz, 60Hz, 100Hz입니다.
Location Usage Description 사용자 위치에 액세스하는 이유를 이 필드에 입력할 수 있습니다.
Mute Other Audio Sources Unity 애플리케이션이 배경에서 실행되는 애플리케이션의 오디오를 중지시키도록 하려면 이 옵션을 선택합니다. Unity 애플리케이션과 함께 배경에서 실행되는 애플리케이션의 오디오도 계속 재생하려면 이 옵션을 선택 해제합니다.
Prepare iOS for Recording 선택하면 마이크 녹음 API가 초기화됩니다. 그러면 녹음 지연 속도가 감소하지만 iPhone에서는 오디오 출력을 이어폰을 통해서만 재전송합니다.
Requires Persistent WiFi 애플리케이션을 사용하려면 Wi-Fi에 접속해야 하는지 지정합니다. iOS에서는 애플리케이션 실행 중에 활성 Wi-Fi 연결이 유지됩니다.
Behaviour in Background 사용자가 홈 버튼을 누르면 애플리케이션이 수행할 작업을 지정합니다.
- Suspend 표준 동작입니다. 앱이 일시중지되지만 종료되지는 않습니다.
- Exit 홈 버튼을 누르면 앱이 일시중지되지 않고 종료됩니다.
- Custom 배경 프로세싱을 사용하여 원하는 동작을 구현할 수 있습니다. 여기서 예제를 확인할 수 있습니다.
Allow downloads over HTTP (nonsecure) 옵션을 활성화하면 HTTP를 통해 콘텐츠를 다운로드할 수 있습니다. 디폴트 설정인 HTTPS가 권장됩니다.
Supported URL schemes 지원되는 URL 스키마 리스트입니다.
Disable HW Statistics 기본적으로, Unity iOS 앱에서는 개발자가 결정을 내리는 데 도움이 되는 종합 정보를 제공할 수 있도록 익명 HW 통계를 Unity로 보냅니다. 통계는 http://stats.unity3d.com/에서 확인할 수 있습니다. 이 옵션을 선택하면 앱에 대한 통계를 보내는 기능이 비활성화됩니다.
Architecture 타겟으로 지정할 아키텍처를 선택할 수 있습니다. 디폴트인 Universal이 권장됩니다. 고급 디바이스에 탑재되는 일부 앱에서는 Arm64-only 옵션을 선택하는 것이 좋을 수 있습니다. Armv7은 일관성을 유지하기 위해 사용됩니다.
- Universal 권장 옵션입니다. 두 아키텍처를 모두 지원합니다.
- Armv7 이전 Armv7 아키텍처만 지원합니다.
- Arm64 새 Arm64 아키텍처만 지원합니다.
- x86_64 Simulator SDK_ 에 사용할 수 있는 유일한 아키텍처입니다. x86_64 아키텍처를 지원합니다.
Scripting Define Symbols 커스텀 컴파일 플래그입니다. 자세한 내용은 플랫폼별 컴파일 페이지를 참조하십시오.
Optimization
Api Compatibility Level 활성 .NET API 프로파일을 지정합니다. 아래를 참조하십시오.
- .Net 2.0 .NET 2.0 라이브러리입니다. .NET 호환성 최대, 파일 크기 최대
- .Net 2.0 Subset 전체 .NET 호환성의 부분 집합, 파일 크기 작음
Prebake Collision Meshes 빌드 시간에 충돌 데이터를 메시에 추가할지 설정합니다.
Preload Shaders 플레이어가 시작될 때 셰이더를 로드할지 설정합니다.
Preloaded Assets 플레이어가 시작되면 에셋 배열이 로드됩니다.
AOT compilation options 추가적인 AOT 컴파일러 옵션입니다.
Strip Engine Code 코드 스트리핑을 활성화합니다. 설정은 IL2CPP 스크립팅 백엔드에서만 사용 가능합니다.
Script Call Optimization 원할 경우 런타임에 속도를 높이기 위해 예외 처리를 비활성화할 수 있습니다. 자세한 내용은 iOS 최적화를 참조하십시오.
- Slow and Safe 전체 예외 처리가 발생합니다(Mono 스크립팅 백엔드를 사용하면 기기 성능에 영향을 줄 수 있음).
- Fast but no Exceptions 기기의 예외에 대한 데이터를 제공하지 않습니다(Mono 스크립팅 백엔드를 사용하면 게임이 더 빠르게 실행됨).
Vertex Compression 압축할 버텍스 채널을 선택합니다. 압축하면 메모리와 대역폭을 절약할 수 있지만 정밀도가 떨어집니다.
Optimize Mesh Data 적용된 머티리얼에 필요 없는 데이터를 메시에서 제거합니다(탄젠트, 노멀, 컬러, UV).

참고: 올바른 SDK를 선택해야 합니다. 예를 들어 디바이스 를 선택한 후 Xcode에서 시뮬레이터를 타겟으로 지정하면 빌드에 실패하고 많은 오류 메시지가 나타납니다.

API 호환성 수준

모든 타겟에 대한 Mono API 호환성 수준을 선택할 수 있습니다. 때때로 타사 .NET DLL은 원하는 .NET 호환성 수준을 벗어납니다. 이런 경우에 발생하는 일과 그에 대한 해결 방법을 알고 싶으면 Windows에서 “Reflector”를 받으십시오.

  1. 문제가 있는 API 호환성 수준의 .NET 어셈블리를 Reflector로 드래그합니다. .NET 어셈블리는 Frameworks/Mono/lib/mono/YOURSUBSET/에 있습니다.
  2. 확인하려는 타사 어셈블리도 드래그합니다.
  3. 타사 어셈블리를 마우스 오른쪽 버튼으로 클릭하고 “분석”을 선택합니다.
  4. 분석 보고서에서 “Depends on” 섹션을 살펴봅니다. 타사 어셈블리에서 사용하지만 원하는 .NET 호환성 수준에서 벗어나는 경우 모두 빨간색으로 강조 표시됩니다.

번들 식별자

Bundle Identifier 문자열은 빌드하는 게임의 권한 설정 프로파일과 일치해야 합니다. 식별자의 기본 구조는 com.CompanyName.GameName 입니다. 이 구조는 국제적으로 거주 지역에 따라 다를 수 있으므로, 항상 Apple에서 개발자 계정용으로 제공한 문자열을 디폴트로 사용해야 합니다. GameName은 Apple iPhone 개발자 센터 웹사이트에서 관리할 수 있는 권한 설정 인증서에서 설정됩니다. 작업이 수행되는 방법에 대한 자세한 내용은 Apple iPhone 개발자 센터 웹사이트를 참조하십시오.

스트리핑 레벨

대부분의 게임에는 필요한 dll이 모두 사용되지 않습니다. 엔진 코드 제거(Strip Engine Code) 옵션을 활성화하면 사용되지 않은 부분을 제거하여 iOS 기기에서 빌드된 플레이어의 크기를 줄일 수 있습니다. 현재 선택된 옵션을 통해 일반적으로 제거되는 클래스를 게임에서 사용 중인 경우, 빌드를 만들 때 디버그 메시지가 표시됩니다.

스크립트 호출 최적화

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

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

XR설정

프로퍼티: 기능:
XR 설정
Virtual Reality Supported Unity 에디터와 게임 빌드에 대한 네이티브 VR 지원을 활성화합니다.
Vuforia 증강 현실 지원(Vuforia Augmented Reality Supported) Vuforia 소프트웨어 개발 키트 사용을 활성화합니다. Vuforia 소프트웨어 라이선스를 보유하고 있고 해당 라이선스의 약관에 동의해야 프로퍼티를 활성화할 수 있습니다.

인크리먼트 빌드

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

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


  • 2018–05–29 편집 리뷰를 거쳐 페이지 수정됨

  • 5.5에서 Mute Other Audio Sources 추가됨

iOS 하드웨어 가이드
iOS 2D 텍스처 오버라이드