Version: Unity 6.0 (6000.0)
言語 : 日本語
カスタムアセットパックの作成
Android のグラフィックス

ランタイムのアセットパックの管理

Unity はランタイムにアセットパックを管理するための API を備えています。これらの API は Google の PlayCore API を使用するため、PlayCore と同じ制限があり、install-time アセットパックを管理することはできません。PlayCore API を使用するということは、アプリケーションが PlayCore プラグインを必要とするということでもあります。プロジェクトにアセットパック (カスタム アセットパックまたは Unity が生成したアセットパック) がある場合、Unity はアプリケーションのマニフェストに PlayCore の依存関係を自動的に追加します。

アセットパックをダウンロードし、それらのアセットにアクセスする方法は、アセットパックの配信モードによって異なります。アセットパックの配信モードは 3 種類あります。

  • install-time: Google Play は、デバイスがアプリケーションをインストールすると自動的に install-time アセットパックをダウンロードします。Google Play はこれらのアセットパックを基本アプリケーションの一部とみなし、エンドユーザーはアプリケーション全体をアンインストールしない限り、それらのアセットパックをアンインストールすることはできません。PlayCore API は install-time アセットパックを処理しないため、install-time アセットパックに対して状態の確認、ダウンロードのリクエスト、削除を行うことはできません。Unity が生成した install-time アセットパックのストリーミングアセットを除き、これらのアセットパック内のアセットに直接アクセスすることもできません。ストリーミングアセットにアクセスするには、Application.streamingAssetsPath を使用してストリーミングアセットの場所へのパスを取得し、UnityWebRequest を使用してそのパス内のアセットにアクセスします。カスタムアセットパックを作成する場合、標準ファイル API を使用してアセットパック内のアセットにアクセスすることはできません。代わりに、Android の AssetManager API を使用してください。
  • fast-follow: Google Play は、アプリケーションをインストールした後、fast-follow アセットパックのダウンロードを自動的に開始します。ただし、アプリケーションの初回起動時に、一部の fast-follow アセットパックが利用できない可能性があります。状態を確認し、fast-follow アセットパックをダウンロードするには、アセットパックのダウンロードを参照してください。
  • on-demand: Google Play では、on-demand アセットパックのダウンロードが自動的に行われません。手動でダウンロードを開始する必要があります。この方法については、アセットパックのダウンロードを参照してください。

配信モードの詳細については、配信モードを参照してください。

アセットパックのダウンロード

アプリケーションで fast-follow または on-demand アセットパックを使用している場合は、デバイスがこれらのアセットパックをダウンロードしないと、アプリケーションはそれらのアセットパック内のアセットにアクセスできません。アセットパックの状態を確認し、デバイスにない場合にダウンロードするには、まず各アセットパックの名前を把握する必要があります。Unity が生成したアセットパックの名前を取得するには、AndroidAssetPacks.GetCoreUnityAssetPackNames を呼び出します。カスタムアセットパックの名前を取得するためのランタイム API は存在しないため、ご自分で追跡する必要があります。カスタムアセットパックの名前はビルド時に設定します。ディレクトリの名前です。

アセットパックの名前がわかったら、各アセットパックの状態を確認するために、AndroidAssetPacks.GetAssetPackStateAsync を呼び出してアセットパックの名前を渡します。これにより、クエリしたアセットパックの状態が返されるため、その結果をもとに、アセットパックをダウンロードする必要があるかどうかを判断できます。Unity が生成したすべてのアセットパックの状態をすばやくクエリする場合は、AndroidAssetPacks.coreUnityAssetPacksDownloaded を使用します。これは、最初のシーン以外のシーンをロードする、または Unity が処理する他のリソースにアクセスしようとする前に、Unity が生成したすべてのアセットパックが利用可能であることを確認できるため便利です。

ダウンロードする必要があるアセットパックごとに、AndroidAssetPacks.DownloadAssetPackAsync を呼び出し、アセットパック名を渡します。アセットパックのダウンロード中は、ダウンロードが一時停止または失敗する場合があるため、ダウンロード状態をモニタリングしてください。この方法は 2 つあります。

  • AndroidAssetPacks.DownloadAssetPackAsync が返す DownloadAssetPackAsyncOperation インスタンスを定期的に確認します。
  • 2 番目のパラメーターとしてコールバックを受け取る AndroidAssetPacks.DownloadAssetPackAsync のバージョンを使用します。渡すコールバックは、ダウンロードの状態を判断するために使用できる AndroidAssetPackInfo をパラメーターとして取得する必要があります。

追加リソース

カスタムアセットパックの作成
Android のグラフィックス