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 回答