私は今までいつものように XCode プロジェクトにアセットを持っているゲームに取り組んでいますが、実行時にそれらをロードできるかどうか疑問に思っていますが、これを行う方法がわかりません。私は parse.com サービスを使用しているので、実際にアセットをオンラインで保存してロードすることは問題ありませんが、コンパイル中のプロジェクトに関してはどのように機能しますか? または、ロードされた後、アセットが実際にプログラムの一部であることを知っている XCode プロジェクトですか?
2 に答える
アセットがアプリケーション バンドルの一部である場合、合計すると IPA ファイルのサイズになります。OTAの場合、IPAのサイズが重要です。現在、OTA のサイズ制限は 50MBです。ゲームの場合、通常、アセットのサイズは数百 MB になる場合があり、アプリ ストアからの OTA ダウンロードが制限されます。
したがって、アプリケーションはゲームの初回実行時に必要なアセットをダウンロードし、ディスクに保存します。この方法の場合、アプリケーションは、再開機能 (エラー処理または部分ダウンロード シナリオ用) とキャッシュ技術を備えたアセット ダウンロード モジュールを実装する必要があります。
バンドルされたアセット
バンドルされたリソースにアクセスするには、次のようなコードを使用する必要があります
NSString *imgBundlePath=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"someimage.png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imgBundlePath];
ダウンロードされたアセット
アプリケーションがサーバーからリソースをダウンロードする場合、ダウンロードされたファイルはアプリケーション ディレクトリに保存する必要があります。デバイスにインストールすると読み取り専用になるため、バンドルに保存することはできません。これらのファイルにアクセスするためのコードは
// Assuming downloaded assets are stored in NSCachesDirectory
NSArray *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *imgPath = [[cachePath lastObject] stringByAppendingPathComponent:@"someimage.png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imgBundlePath];
あなたの質問に答えたことを願っています。
画像アセットの場合、Coredataをバックエンドとして使用し、画像を BLOB タイプとして保存できます。イメージを頻繁に更新したい場合、またはオンデマンドでイメージをロードする必要がある場合は、イメージをサーバーに保持し、SDWebImage ライブラリを使用してダウンロードまたは表示できます。
オンデマンドで画像をロードする予定の場合、アプリが動作するにはインターネット接続が必要です。
アーキテクチャを決定するのはあなたの選択です:)