Version: 2022.3
言語: 日本語
Android プレイヤーのコマンドライン引数を指定する
Android のディープリンク

Unity を Android アプリケーションに統合

このページでは、Unity Runtime Library をライブラリ機能として Android アプリケーションに統合する方法を説明します。

この機能を使用して、3D/2D リアルタイムレンダリング、AR 体験、 3D モデルの相互作用、2D ミニゲームなどの Unity 搭載の機能をアプリケーションに組み込むことができます。Unity Runtime Library は、 アプリケーション内でコンテンツをロード、アクティブ化、アンロードするタイミングと方法を管理するための制御へのアクセスを可能にします。

重要: プロジェクトを Unity 2019.4 以上にアップグレードする場合、Unity as a Library の導入によって、Android 向けに正しく動作するように ネイティブマネージ のプラグインを調整する必要があるかもしれません。Gradle マニフェストに変更を加えるプラグインは、Using Unity as a library in native iOS/Android apps で概説されている Gradle の変更を使用する必要があります。

どのように機能するか

Unity から Gradle プロジェクトをビルドする場合は、特になにも変更する必要はありません。

Unity が生成するすべての Android Gradle プロジェクト の構造は以下のとおりです。

  • unityLibrary モジュールのライブラリ部分。他の Gradle プロジェクトに統合できます。これには、Unity ランタイムと Player データが含まれます。
  • ランチャー モジュールの薄いランチャー部分。アプリケーション名とそのアイコンが含まれています。Unity を起動するシンプルな Android アプリケーションです。このモジュールを独自のアプリケーションに置き換えることができます。

Unity を別の Android Gradle プロジェクトに統合するには、settings.gradle ファイルを使用して、生成された Android Gradle プロジェクトの unityLibrary モジュールを Android Unity プロジェクトに加える必要があります。

この リポジトリ には、Unity を Android アプリケーションに統合する方法を示すサンプルプロジェクト、プラグイン、ドキュメントが不含まれています。

プレイヤーをコントロールするには、インテントを引き継いで Unity のアクティビティを起動し、必要に応じて拡張します。詳細は、Android デベロッパードキュメントの インテントとインテントフィルタ を参照してください。UnityPlayer Java API を使用することもできます。

IUnityPlayerLifecycleEvents

IUnityPlayerLifecycleEvents は Unity Player の 2 つの重要なライフサイクルイベントと相互作用する方法を提供します。

  • Unload - Application.Unload または UnityPlayer.unload() が Unity Player をアンロードするときに、アプリケーションは IUnityPlayerLifecycleEvents.onUnityPlayerUnloaded を呼び出します。これにより、Unity プレイヤーは一時停止の状態になり、すべてのシーンがアンロードされますが、他のすべてのシーンはメモリにロードされたままになります。
  • Quit - Unity Player が終了すると、アプリケーションは IUnityPlayerLifecycleEvents.onUnityPlayerQuitted を呼び出します。Unity を実行していたプロセスは、この呼び出しの後に終了します。

IUnityPlayerLifecycleEvents のインスタンスを UnityPlayer コンストラクターに渡すことができます。または、UnityPlayerUnityPlayerActivity のサブクラスでメソッドをオーバーライドできます。

制限

Unity はランタイムの ライフサイクルを コントロールしないため、ライブラリとしての Unity はすべてのシナリオで機能するわけではありません。既知の制限は以下のとおりです。

  • Unity はライブラリとしてフル画面レンダリングのみをサポートし、画面の一部でのレンダリングはサポートしていません。
  • Unity ランタイムの複数のインスタンスを読み込んだり統合したりすることはできません。
  • Unity ランタイムで動作するようにサードパーティのプラグイン (ネイティブマネージ の両方) を適応させる必要があるかもしれません。
  • Unity as a LibraryはXamarinアプリプラットフォームと互換性がありません。

その他の参考資料

Android プレイヤーのコマンドライン引数を指定する
Android のディープリンク