我正在開發一款到目前爲止我已經在XCode項目中獲得資產的遊戲,但我想知道是否可以在運行時加載它們,但我不知道這個怎麼做。我使用的是parse.com服務,所以實際上在線存儲資產並加載它們是沒有問題的,但是對於正在編譯的項目來說,這是如何工作的?或者XCode項目知道資產實際上是加載後的程序的一部分?在iOS中加載資產
1
A
回答
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
對於圖片資源,您可以使用Coredata作爲後端並將圖片存儲爲blob類型。如果要頻繁更新圖像或需要按需加載圖像,則可以將圖像保存在服務器中,並使用SDWebImage library下載或顯示。
如果您計劃按需加載圖片,那麼您的應用將需要互聯網連接才能正常工作。
現在這是你的選擇來決定架構:)
相關問題
- 1. iOS Cordova資產未加載
- 2. 在iOS上預加載資產
- 3. Libgdx - 正在加載資產
- 4. 在Nodejs中加載靜態資產
- 5. 資產文件不在laravel中加載?
- 6. 在Laravel模板中加載資產?
- 7. 在Unity中重新加載XML資產
- 8. 在cocos2D中預加載資產
- 9. iOS應用啓動後的漸進式資產(或資產包)加載
- 10. Sinatra不加載資產
- 11. ReactJs - 加載跨域資產
- 12. 無法加載資產CodeIgniter
- 13. hdpi資產不再加載
- 14. Symfony2的 - 資產不加載
- 15. Gitlab不加載資產
- 16. 動態資產加載heroku
- 17. Jammit不加載資產
- 18. GdxRuntimeException:資產未加載
- 19. Android OpengGL es資產加載
- 20. 使用FObjectFinder加載資產
- 21. Libgdx:AssetManager未加載資產
- 22. Rails 4.1.6資產管道沒有在生產中加載資產和javascript
- 23. 銷燬Unity資產包中的加載資產
- 24. Rails 4生產資產沒有加載
- 25. 無法加載資產生產rails5
- 26. 重新加載簡歷中的資產
- 27. 從資產中加載並使用soundpool
- 28. 將資產預加載到NSURLCache中
- 29. 從資產中加載圖片
- 30. 在Heroku上加載了兩次資產
所以你想存儲你的資產捆綁?或者想要從服務器下載資產? –
從服務器下載。 – Phil