iOS プラットフォーム用の Unity プロジェクトをビルドすると、Xcode プロジェクトを含むフォルダーが作成されます。このプロジェクトをデバイスにデプロイしたり、App Store で配布したりする前に、ビルドして署名する必要があります。
ノート: 生成された Xcode プロジェクトは、Xcode.PBXProject を使用して変更できます。
生成されたすべての Unity iOS Xcode プロジェクトは、以下の構造とターゲットを持ちます。
Xcode プロジェクトには、Xcode プロジェクトファイル xcodeproj、および Xcode プロジェクトナビゲーターにのみ表示されるフレームワークリンクが含まれます。デフォルトのフォルダーとは別に、カスタムフォルダーを作成してカスタムファイルを追加できます。
MainApp フォルダーと、起動画面、.xib ファイル、アイコン、データ、Info.plist ファイルなどのアプリケーション表示データが含まれます。Unity-iPhone ターゲットは、UnityFramework ターゲットに 1 つの依存関係を持ちます。UnityFramework.framework バンドルを生成するターゲット。Unity ランタイム、Classes、UnityFramework、Libraries フォルダー、および依存フレームワークが含まれます。UnityFramework フォルダーには、Unity ランタイム、Unity プラグイン、パッケージ、プロジェクト用に統合されたプライバシーマニフェストファイル (PrivacyInfo.xcprivacy) が含まれます。libGameAssembly.a: プロジェクトのすべてのマネージコードを含む静的ライブラリ。C++ にクロスコンパイルされ、iOS 用にビルドされています。il2cpp.a: マネージコードをサポートする IL2CPP ランタイムコードを含む静的ライブラリ。ノート: UnityFramework のターゲット GUID を取得するには PBXProject.GetUnityFrameworkTargetGuid() を使用し、Unity-iPhone のターゲット GUID を取得するには PBXProject.GetUnityMainTargetGuid() を使用します。
Classes フォルダーには、Unity ランタイムと Objective-C を統合するコードが含まれています。Unity は、このフォルダー内の main.mm ファイルと UnityAppController.mm/h ファイルにアプリケーションのエントリー ポイントを格納します。UnityAppController から派生した独自の AppDelegate を作成するか、プラグインのいずれかに AppController.h が含まれている場合は、代わりに UnityAppController.h を追加することもできます。Plugins/iOS フォルダーに AppController.mm/h が含まれている場合は、それらをマージして名前を変更できます。
InternalProfiler.h ファイルは、内部プロファイラーを有効にするための条件付きのコンパイラーを定義します。このフォルダー内にあるコードは頻繁に変更されず、ここにカスタムクラスを配置できます。Append モードを選択すると、ビルド間でこのフォルダーに加えられた変更は維持されます。ただし、この機能は複数のビルドターゲットをサポートしないため、Libraries フォルダーの構造を固定する必要があります。
Unity の内部プロファイラーは高速で干渉せず、基本的な情報をフィードしてくれます。
このフォルダーには、アプリケーションのシリアル化されたアセットと、コードストリッピング設定に応じて完全なコードまたはメタデータとしての .NET アセンブリ (.dll または .dat ファイル) が含まれます。machine.config ファイルは、セキュリティや WebRequest などのさまざまな .NET サービスを設定します。Xcode はビルドごとにこのフォルダーのコンテンツを更新します。独自の変更を加えるべきではありません。
デフォルトでは、Data フォルダーの Target Membership は Unity-iPhone ターゲットで、Unity ランタイムは mainBundle でそれを検索します。Unity ランタイムが Data フォルダーを検索するデフォルトバンドルを変更するには、実行関数の 1 つを呼び出す前に UnityFramework インスタンスで setDataBundleId: "com.my.product" を呼び出します。例えば、UnityFramework 呼び出しと Data を一緒に取得する場合は、setDataBundleId: "com.unity3d.framework" を使用し、ターゲットメンバーシップを UnityFramework に設定します。
注意オンデマンドリソースは、Data フォルダーが Application ターゲットの一部であり、UnityFramework ターゲットの一部ではない場合にのみサポートされます。
Libraries フォルダーには、IL2CPP の libil2cpp.a が含まれています。libiPhone-lib.a ファイルは Unity ランタイム静的ライブラリで、RegisterMonoModules.cpp は Unity ネイティブコードを .NET にバインドします。Xcode はビルドごとにこのフォルダーのコンテンツを更新します。独自の変更を加えるべきではありません。
アイコンとスプラッシュスクリーン (.png ファイル) は、Unity-iPhone フォルダーのアセットカタログにあります。Unity はこれらのファイルを自動的に管理します。起動画面、XML Interface Builder (.xib ファイル)、Storyboard ファイルは、プロジェクトのルートフォルダーに格納されます。これらのファイルは、プレイヤー設定ウィンドウ (メニュー: Edit > Project Settings > Player Settings) で設定できます。作成するカスタム起動画像は、Apple のヒューマンインターフェイスガイドラインに準拠していることを確認してください。
Unity の Player Settings (mainBundle を介してアクセス) で、file within the Unity-iPhone ターゲット内で Info.plist ファイルを管理できます (メニュー: Edit > Project Settings > Player Settings > Other Settings > Identification)。Unity がプレイヤーをビルドする場合、このファイルを置き換えるのではなく更新します。必要がない限り、変更を加えないでください。
bundleWithIdentifier:@"com.unity3d.framework" を介してアクセスされる /UnityFramework/Info.plist ファイルは、UnityFramework の一部です。mainBundle の Info.plist ファイルの代わりに、このファイルに値を保持できます。これにより、例えば Unity をライブラリとして使用するなど、UnityFramework が別のアプリケーションに移動された場合でも、これらの値を取得できるようになります。