ドキュメント

Unity Engine

Unity Engine

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

Explains how to integrate the Unity Runtime Library into Android applications.
読み終わるまでの所要時間 7 分最終更新 1ヶ月前

このページでは、Unity Runtime Library をライブラリ機能として Android アプリケーションに統合する方法を説明します。
この機能を使用して、3D/2D リアルタイムレンダリング、AR 体験、 3D モデルの相互作用、2D ミニゲームなどの Unity 搭載の機能をアプリケーションに埋め込むことができます。Unity Runtime Library は、 アプリケーション内でコンテンツをロード、アクティベート、アンロードするタイミングと方法を管理するためのコントロールへのアクセスを可能にします。
重要: プロジェクトに 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 データが含まれています。
  • launcher モジュールの薄いランチャー部分。アプリケーション名とそのアイコンが含まれています。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 Player は一時停止の状態になり、すべてのシーンがアンロードされますが、他のすべてのシーンはメモリにロードされたままになります。
  • Quit - Unity Player が終了すると、アプリケーションは
    IUnityPlayerLifecycleEvents.onUnityPlayerQuitted
    を呼び出します。Unity を実行していたプロセスは、この呼び出しの後に終了します。
IUnityPlayerLifecycleEvents
のインスタンスを UnityPlayer コンストラクターに渡すことができます。または
UnityPlayer
と
UnityPlayerActivity
のサブクラスのメソッドをオーバーライドすることもできます。

制限

Unity はランタイムのライフサイクルをコントロールしないため、ライブラリとしての Unity はすべてのシナリオで機能するわけではありません。既知の制限は以下のとおりです。
  • Unity はライブラリとして全画面のレンダリングのみをサポートします。ただし、Unity Industry のお客様は、制限と機能が異なる場合があります。
  • Unity ランタイムの複数のインスタンスを読み込んだり統合したりすることはできません。
  • Unity ランタイムで動作するようにサードパーティのプラグイン (ネイティブとマネージの両方) の調整が必要な場合があります。
  • Unity はライブラリとして Xamarin アプリケーションプラットフォームと互換性がありません。
  • Unity ランタイムライブラリを動的モジュールとして Play Feature Delivery と統合することはできません。

追加リソース