# iOS 스크립팅

> Understand scripting for iOS.

iOS 기기의 기능 대부분은 [Input](/engine/6000.0/script-reference/unity-engine/input.md) 및 [Handheld](/engine/6000.0/script-reference/unity-engine/handheld.md) 클래스를 통해 노출됩니다. 크로스 플랫폼 프로젝트의 경우 iOS 전용 C# 코드를 조건부로 컴파일하기 위해 **UNITY\_IPHONE** 을 정의합니다.

## 디바이스 프로퍼티##device-properties

액세스할 수 있는 다양한 기기별 프로퍼티가 있습니다. 다음에 대한 스크립트 레퍼런스 페이지를 참조하십시오.

* [SystemInfo.deviceUniqueIdentifier](/engine/6000.0/script-reference/unity-engine/system-info/device-unique-identifier.md)
* [SystemInfo.deviceName](/engine/6000.0/script-reference/unity-engine/system-info/device-name.md)
* [SystemInfo.deviceModel](/engine/6000.0/script-reference/unity-engine/system-info/device-model.md)
* [SystemInfo.operatingSystem](/engine/6000.0/script-reference/unity-engine/system-info/operating-system.md)

## 불법 복제 방지 검사##anti-piracy-check

애플리케이션을 해킹하는 가장 일반적인 방법은 AppStore DRM 보호를 제거한 후 무료로 재배포하는 것입니다. Unity의 불법 복제 방지 검사를 사용하면 애플리케이션이 AppStore에 제출된 후에 변경되었는지 알아낼 수 있습니다.

[Application.genuine](/engine/6000.0/script-reference/unity-engine/application/genuine.md) 프로퍼티를 사용하여 애플리케이션이 정품이며 해킹되지 않았는지 확인합니다. 프로퍼티가 `false`를 반환하면 사용자에게 해킹된 앱을 사용하고 있다고 경고하거나 특정 기능을 비활성화할 수 있습니다.

**참고:** `Application.genuine`과 함께 [Application.genuineCheckAvailable](/engine/6000.0/script-reference/unity-engine/application/genuine-check-available.md)을 사용하여 애플리케이션 무결성을 확인하십시오. [Application.genuine](/engine/6000.0/script-reference/unity-engine/application/genuine.md) 프로퍼티에 액세스하는 것은 리소스를 많이 소모하는 작업이기 때문에 프레임 업데이트 및 처리 시간이 중요한 코드에서는 수행하지 않아야 합니다.

## 진동 지원##vibration-support

[Handheld.Vibrate](/engine/6000.0/script-reference/unity-engine/handheld/vibrate.md)를 호출하여 진동을 트리거할 수 있습니다. 진동 하드웨어가 없는 기기는 이 호출을 무시합니다.

## 작업 표시기##activity-indicator

모바일 운영체제는 느린 작업에 사용할 수 있는 빌트인 작업 표시기를 지원합니다. 예시는 [Handheld.StartActivityIndicator 기술 자료](/engine/6000.0/script-reference/unity-engine/handheld/start-activity-indicator.md)를 참조하십시오.

## 화면 방향##screen-orientation

iOS 및 Android 기기 모두에서 애플리케이션의 화면 방향을 제어할 수 있습니다. 방향 변경을 감지하거나 특정 방향을 강제로 사용하도록 만들어 사용자가 기기를 잡는 방식에 따른 앱 동작을 구현할 수 있습니다.

기기 방향을 검색하려면 [Screen.orientation](/engine/6000.0/script-reference/unity-engine/screen/orientation.md) 프로퍼티에 액세스합니다. 방향은 다음 상태 중 하나를 나타냅니다.

| **Orientation**        | **Behavior**                                   |
| ---------------------- | ---------------------------------------------- |
| **Portrait**           | 디바이스가 세워진 상태로 홈버튼이 아래쪽에 위치하는 세로 모드를 나타냅니다.     |
| **PortraitUpsideDown** | 디바이스가 세워진 상태로 홈버튼이 위쪽에 위치하는 뒤집어진 세로 모드를 나타냅니다. |
| **LandscapeLeft**      | 디바이스가 세워진 상태로 홈버튼이 오른쪽에 위치하는 가로 모드를 나타냅니다.     |
| **LandscapeRight**     | 디바이스가 세워진 상태로 홈버튼이 왼쪽에 위치하는 가로 모드를 나타냅니다.      |

위 방향 중 하나로 [Screen.orientation](/engine/6000.0/script-reference/unity-engine/screen/orientation.md)을 설정하거나 [ScreenOrientation.AutoRotation](/engine/6000.0/script-reference/unity-engine/screen-orientation/auto-rotation.md)을 사용하여 화면 방향을 제어합니다. 자동 회전을 활성화하면 대소문자별로 일부 방향을 비활성화할 수 있습니다.

자세한 내용은 다음의 API 기술 자료를 참조하십시오.

* [Screen.autorotateToPortrait](/engine/6000.0/script-reference/unity-engine/screen/autorotate-to-portrait.md)
* [Screen.autorotateToPortraitUpsideDown](/engine/6000.0/script-reference/unity-engine/screen/autorotate-to-portrait-upside-down.md)
* [Screen.autorotateToLandscapeLeft](/engine/6000.0/script-reference/unity-engine/screen/autorotate-to-landscape-left.md)
* [Screen.autorotateToLandscapeRight](/engine/6000.0/script-reference/unity-engine/screen/autorotate-to-landscape-right.md)

애플리케이션의 기본 방향 설정과 관계없이 사용자가 설정한 기기 방향에 따라 애플리케이션의 화면 방향이 달라질 수 있습니다.

다음 표에는 애플리케이션에 대해 설정된 기본 화면 방향 및 기기 방향에 따라 애플리케이션이 로드되는 실제 방향이 나와 있습니다.

|                  | **기본 화면 방향: 자동 회전**                                                                                                                                                                                                                                                                                                                                                                     | **기본 화면 방향: 세로**                                                                                                                                                                                  | **기본 화면 방향: 가로**                                                                                                                                                                                                              |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **기기 방향: 자동 회전** | 애플리케이션 화면은 세로 화면에 로드되며 세로, 가로 오른쪽, 가로 왼쪽 방향 간에 회전할 수 있습니다(세로 위아래 방향 제외).**참고**: iPad에서 애플리케이션 화면은 기기 방향에 따라 세로 또는 가로 방향으로 로드됩니다. 화면은 세로, 세로 위아래, 가로 오른쪽, 가로 왼쪽 방향 간에 회전할 수 있습니다.                                                                                                                                                                                                        | 애플리케이션 화면이 로드되고 세로 방향으로 계속 고정됩니다. 세로 위아래 방향이 허용되더라도 화면은 해당 방향으로 회전하지 않습니다.**참고**: iPad에서는 애플리케이션 화면이 세로 화면으로 로드되며 세로 화면과 세로 위아래 방향 간에 회전할 수 있습니다. 기기 방향이 실행 시 가로인 경우 스플래시 화면이 가로 방향으로 로드될 수 있습니다. | 스플래시 화면은 기기 방향과 동일한 방향으로 로드됩니다. 애플리케이션 화면은 씬이 로드될 때 가로 화면에 로드되며 가로 왼쪽 또는 가로 오른쪽 방향 간에 회전할 수 있습니다.**참고**: iPad에서는 애플리케이션 화면이 가로 화면으로 로드되며, 가로 왼쪽 및 가로 오른쪽 방향 간에 회전할 수 있습니다. 기기 방향이 실행 시 세로 화면인 경우 스플래시 화면이 세로 화면으로 로드될 수 있습니다. |
| **기기 방향: 세로 고정** | 애플리케이션 화면이 로드되고 세로 방향으로 계속 고정됩니다.**참고**: 세로 방향에서 세로에 대한 [ScreenOrientation.AutoRotation](/engine/6000.0/script-reference/unity-engine/screen-orientation/auto-rotation.md) 프로퍼티를 false로 설정하면 애플리케이션 화면이 가로 방향으로 회전합니다. 이제 가로에 대한 [ScreenOrientation.AutoRotation](/engine/6000.0/script-reference/unity-engine/screen-orientation/auto-rotation.md) 프로퍼티를 false로 설정하면 화면 방향이 변경되지 않습니다. | 애플리케이션 화면이 로드되고 세로 방향으로 계속 고정됩니다.                                                                                                                                                                 | 스플래시 화면은 세로 방향으로 로드되지만, 애플리케이션 화면은 씬이 로드될 때 가로 방향으로 로드됩니다. 기본적으로 애플리케이션 화면은 가로 왼쪽 방향으로 계속 고정됩니다.**참고**: iPad에서는 스플래시 화면이 세로 방향으로 로드되고 씬은 가로 방향으로 로드됩니다. 애플리케이션 화면은 가로 방향으로 계속 고정됩니다.                                          |
| **기기 방향: 가로 고정** | iPhone에 가로 고정 설정이 없으므로 해당되지 않습니다. 애플리케이션이 가로 상태인 동안 사용자가 기기 자동 회전 설정을 끄면 애플리케이션 화면이 회전하고 세로 방향으로 계속 고정됩니다.**참고**: iPad에서는 애플리케이션이 가로 방향으로 로드되고 계속 고정됩니다.                                                                                                                                                                                                                                | iPhone에 가로 고정 설정이 없으므로 해당되지 않습니다. 애플리케이션은 세로 방향으로 계속 고정되어 있습니다.**참고**: iPad에서는 스플래시 화면이 가로 방향으로 로드되고 씬은 세로 방향으로 로드됩니다. 애플리케이션 화면은 세로 방향으로 계속 고정됩니다.                                               | iPhone에 가로 고정 설정이 없으므로 해당되지 않습니다. 애플리케이션 화면은 가로 화면에서 로드되며 애플리케이션이 로드될 때 가로 왼쪽 또는 가로 오른쪽 방향으로 모두 고정될 수 있습니다.**참고**: iPad에서 애플리케이션 화면은 가로 화면으로 로드되며 기기 방향에 따라 가로 왼쪽 또는 가로 오른쪽 방향으로 계속 고정됩니다.                                    |

## 기기 세대 결정##ipad-multitasking-modes

기기 세대마다 성능이 다르며 다양한 기능을 지원합니다. [iOS.DeviceGeneration](/engine/6000.0/script-reference/unity-engine-i-os/device-generation.md) 프로퍼티를 사용하여 기기의 생성을 쿼리할 수 있습니다.

## 디스플레이 컷아웃##determining-device-generation

일부 디스플레이의 경우 다른 하드웨어가 화면의 특정 영역을 점유하여 보이지 않거나 작동하지 않게 만들 수 있습니다. [Screen.cutouts](/engine/6000.0/script-reference/unity-engine/screen/cutouts.md)를 사용하여 각 컷아웃 주변의 바운딩 박스 목록을 반환하십시오.

iOS 기기는 디스플레이 컷아웃 정보를 가져오기 위한 네이티브 API를 제공하지 않으므로 컷아웃은 사용 가능한 각 iOS 기기에 대한 Xcode 프로젝트에 하드코딩됩니다. 기존 데이터를 수정하거나 `UnityView.mm` 파일에 있는 Unity Xcode 프로젝트 `ReportSafeAreaChangeForView` 함수에서 기기를 추가할 수 있습니다.

## 게임 리플레이 기록##display-cutout

[ReplayKit](/engine/6000.0/script-reference/unity-engine-apple-replay-kit/replay-kit.md)를 사용하면 게임의 오디오 및 비디오를 기기의 마이크 및 카메라에서 캡처된 오디오 및 비디오 설명과 함께 기록할 수 있습니다.
