2

私は今までいつものように XCode プロジェクトにアセットを持っているゲームに取り組んでいますが、実行時にそれらをロードできるかどうか疑問に思っていますが、これを行う方法がわかりません。私は parse.com サービスを使用しているので、実際にアセットをオンラインで保存してロードすることは問題ありませんが、コンパイル中のプロジェクトに関してはどのように機能しますか? または、ロードされた後、アセットが実際にプログラムの一部であることを知っている XCode プロジェクトですか?

4

2 に答える 2

4

アセットがアプリケーション バンドルの一部である場合、合計すると 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];

あなたの質問に答えたことを願っています。

于 2013-08-20T13:24:57.723 に答える
0

画像アセットの場合、Coredataをバックエンドとして使用し、画像を BLOB タイプとして保存できます。イメージを頻繁に更新したい場合、またはオンデマンドでイメージをロードする必要がある場合は、イメージをサーバーに保持し、SDWebImage ライブラリを使用してダウンロードまたは表示できます。

オンデマンドで画像をロードする予定の場合、アプリが動作するにはインターネット接続が必要です。

アーキテクチャを決定するのはあなたの選択です:)

于 2013-08-20T15:51:57.390 に答える