# iOS のスクリプト

> Understand scripting for iOS.

iOS デバイスのほとんどの機能は、[入力](/engine/6000.0/script-reference/unity-engine/input.md)クラスと[ハンドヘルド](/engine/6000.0/script-reference/unity-engine/handheld.md)クラスで公開されています。クロスプラットフォームプロジェクトでは、**UNITY\_IPHONE** は iOS 固有の C# コードを条件的にコンパイルするために定義されます。

## デバイスプロパティ##device-properties

アクセス可能なデバイス固有のプロパティがいくつかあります。以下のl項目について詳しくは、各スクリプトリファレンスページを参照してください。

* [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.genuineCheckAvailable](/engine/6000.0/script-reference/unity-engine/application/genuine-check-available.md) を `Application.genuine` とともに使用して、アプリケーションの整合性を確認します。[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

モバイル OS にはビルトインのアクティビティインジケーターがあり、処理が低速な状態の際に活用できます。例については、[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) プロパティにアクセスします。向きは以下のいずれかです。

| **向き**                 | **動作**                                   |
| ---------------------- | ---------------------------------------- |
| **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) を使用して、ゲームのオーディオと動画を記録し、デバイスのマイクとカメラから取り込んだオーディオと動画の解説を加えることができます。
