我正在开发一款游戏,到目前为止,我像往常一样在XCode项目中拥有自己的资产,但我想知道是否可以在运行时加载它们但我不知道如何做到这一点。我正在使用parse.com服务,所以实际上在线存储资产并加载它们很好,但是如何处理正在编译的项目?或XCode项目知道资产在加载后实际上是程序的一部分吗?
答案 0 :(得分:4)
当资产是应用程序包的一部分时,它们会累加到IPA文件的大小。在OTA的情况下,IPA的规模很重要。目前是OTA size limit is 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];
希望我已经回答了你的问题。
答案 1 :(得分:0)
如果是图片资源,您可以使用Coredata作为后端,并将图像存储为blob类型。如果您想频繁更新图像或需要按需加载图像,则可以将图像保存在服务器中并使用SDWebImage library进行下载或显示。
如果您计划按需加载图片,那么您的应用将需要互联网连接才能正常工作。
现在您可以选择决定架构:)