Version: Unity 6.0 (6000.0)
言語 : 日本語
Unity が iOS アプリケーションをビルドする方法
iOS 用の開発を始める

Unity Xcode プロジェクトの構造

iOS プラットフォーム用の Unity プロジェクトをビルドすると、Xcode プロジェクトを含むフォルダーが作成されます。このプロジェクトをデバイスにデプロイしたり、App Store で配布したりする前に、ビルドして署名する必要があります。

ノート: 生成された Xcode プロジェクトは、Xcode.PBXProject を使用して変更できます。

生成されたすべての Unity iOS Xcode プロジェクトは、以下の構造とターゲットを持ちます。

Unity iOS Xcode プロジェクトの構造
Unity iOS Xcode プロジェクトの構造

Xcode プロジェクトには、Xcode プロジェクトファイル xcodeproj、および Xcode プロジェクトナビゲーターにのみ表示されるフレームワークリンクが含まれます。デフォルトのフォルダーとは別に、カスタムフォルダーを作成してカスタムファイルを追加できます。

プロジェクトターゲット

  • Unity-iPhone: UnityFramework を実行する薄いランチャー部分。これには、MainApp フォルダーと、起動画面、.xib ファイル、アイコン、データ、Info.plist ファイルなどのアプリケーション表示データが含まれます。Unity-iPhone ターゲットは、UnityFramework ターゲットに 1 つの依存関係を持ちます。
  • UnityFramework:UnityFramework.framework バンドルを生成するターゲット。Unity ランタイム、ClassesUnityFrameworkLibraries フォルダー、および依存フレームワークが含まれます。UnityFramework フォルダーには、Unity ランタイム、Unity プラグイン、パッケージ、プロジェクト用に統合されたプライバシーマニフェストファイル (PrivacyInfo.xcprivacy) が含まれます。
  • GameAssembly:C++ コードに変換された C# コードのコンテナ。これをビルドするために、Xcode は Unity が生成するすべての Xcode プロジェクトに含める IL2CPP ツールを使用します。ビルドによって以下が生成されます。
    • libGameAssembly.a: プロジェクトのすべてのマネージコードを含む静的ライブラリ。C++ にクロスコンパイルされ、iOS 用にビルドされています。
    • il2cpp.a: マネージコードをサポートする IL2CPP ランタイムコードを含む静的ライブラリ。

ノート: UnityFramework のターゲット GUID を取得するには PBXProject.GetUnityFrameworkTargetGuid() を使用し、Unity-iPhone のターゲット GUID を取得するには PBXProject.GetUnityMainTargetGuid() を使用します。

Classes フォルダー

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 ヒープサイズ
  • GC イベント数と継続時間

Data フォルダー

このフォルダーには、アプリケーションのシリアル化されたアセットと、コードストリッピング設定に応じて完全なコードまたはメタデータとしての .NET アセンブリ (.dll または .dat ファイル) が含まれます。machine.config ファイルは、セキュリティや WebRequest などのさまざまな .NET サービスを設定します。Xcode はビルドごとにこのフォルダーのコンテンツを更新します。独自の変更を加えるべきではありません。

デフォルトでは、Data フォルダーの Target MembershipUnity-iPhone ターゲットで、Unity ランタイムは mainBundle でそれを検索します。Unity ランタイムが Data フォルダーを検索するデフォルトバンドルを変更するには、実行関数の 1 つを呼び出す前に UnityFramework インスタンスで setDataBundleId: "com.my.product" を呼び出します。例えば、UnityFramework 呼び出しと Data を一緒に取得する場合は、setDataBundleId: "com.unity3d.framework" を使用し、ターゲットメンバーシップUnityFramework に設定します。

注意オンデマンドリソースは、Data フォルダーが Application ターゲットの一部であり、UnityFramework ターゲットの一部ではない場合にのみサポートされます。

Libraries フォルダー

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 のヒューマンインターフェイスガイドラインに準拠していることを確認してください。

プロパティリスト (.plist) ファイル

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 の一部です。mainBundleInfo.plist ファイルの代わりに、このファイルに値を保持できます。これにより、例えば Unity をライブラリとして使用するなど、UnityFramework が別のアプリケーションに移動された場合でも、これらの値を取得できるようになります。

追加リソース

Unity が iOS アプリケーションをビルドする方法
iOS 用の開発を始める