2013-08-20 122 views
1

我正在開發一款到目前爲止我已經在XCode項目中獲得資產的遊戲,但我想知道是否可以在運行時加載它們,但我不知道這個怎麼做。我使用的是parse.com服務,所以實際上在線存儲資產並加載它們是沒有問題的,但是對於正在編譯的項目來說,這是如何工作的?或者XCode項目知道資產實際上是加載後的程序的一部分?在iOS中加載資產

+0

所以你想存儲你的資產捆綁?或者想要從服務器下載資產? –

+0

從服務器下載。 – Phil

回答

3

當資產是應用程序包的一部分時,它們合計爲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]; 

希望我已經回答了您的問題。

+0

我對下載的選項感興趣,但是你說它們存儲在遊戲的第一次運行中,但App商店中的很多遊戲通常似乎每次運行時都會加載資產?他們沒有儲存它們嗎? – Phil

+0

@Phil國際海事組織在每次運行中下載資產可能會影響用戶體驗,並且每次在數據下載方面都需要支付費用,除非有數據連接,否則遊戲無法播放。這有點令人厭惡。 – Amar

0

對於圖片資源,您可以使用Coredata作爲後端並將圖片存儲爲blob類型。如果要頻繁更新圖像或需要按需加載圖像,則可以將圖像保存在服務器中,並使用SDWebImage library下載或顯示。

如果您計劃按需加載圖片,那麼您的應用將需要互聯網連接才能正常工作。

現在這是你的選擇來決定架構:)