質問をする前に、どのような要件が必要かを説明します。私のゲームでは、それをプレイするために必要なテクスチャがたくさんあります。これと ipa サイズ (iOS) の制限のため、assetbundle を使用する必要があると思います。既存のコード実装のため、1 つの画像に対して 1 つのアセット バンドルである、assetbundle を作成します。例: 100 個の画像がある場合、同じ名前で 100 個のアセットバンドル (メインアセットがテクスチャになります) を作成します。
ユーザーが必要なすべてのアセットバンドルを初めてダウンロードした後に、ゲームをオフラインでプレイできるようにしたいです。したがって、ユーザーが初めてゲームをプレイするか、私のゲームの更新バージョンをダウンロードすると、ゲームは強制的に特別なシーンに入り、そこで必要なすべてのアセットバンドルがダウンロードされます。その後、ユーザーはインターネットに接続せずにゲームをプレイできます。
これらのアセットバンドルをダウンロードする方法については、次の 2 つの方法があると思いました。
通常の方法: 100 個のアセットバンドルすべてをサーバーに配置し、すべてのアセットバンドル情報とそのバージョンで構成される 1 つの xml ファイルを配置します。特別なシーンでは、ゲームは xml ファイルをダウンロードし、そこから 100 個のアセットバンドルを 経由でダウンロードします
WWW.LoadFromCacheOrDownload
。目的は、必要なアセットバンドルをゲームのキャッシュに保存することだけです。それらすべてを正常にダウンロードした後、ユーザーはオフラインでプレイできます。ゲームでアセットバンドルをロードする必要がある場合は、もう一度 を呼び出します。アセットバンドルWWW.LoadFromCacheOrDownload
はまだキャッシュにあるため、オフラインでプレイできます。もちろん、キャッシュを明示的にクリアしない限り、キャッシュはまだあると思います。難しい方法: 100 個のアセットバンドルすべてを 1 つの zip ファイルに圧縮します。ゲームは xml ファイルと zip ファイルをダウンロードします。zip を解凍し、100 個のアセットバンドルすべてをモバイル ストレージ (iOS および Android) に配置します。その後、ゲームがアセットをロードする必要がある場合に備えて、モバイル ストレージのパスを指す
WWW.LoadFromCacheOrDownload
URL is using スキームを使用して を呼び出します。file:///
概要:
通常の方法:
マイナス: キャッシュはまだあると思いますが、キャッシュに問題がある場合、ユーザーはゲームをプレイできません。
プラス:キャッシュがうまくいくという仮定のため、実装が簡単です。
難しい方法:
マイナス:まあ、マイナス点かどうかはわかりませんが、これは、アーカイブされていないzipファイルを実装してストレージに保存する必要があります。サーバー側とアプリケーション側でさらに実装が必要です。私は初心者なので、この分野でのベストプラクティスを知りません。
プラス:より堅牢
どちらが良いですか?またはより良い推奨事項はありますか?