2013-08-22 59 views
1

在問問題之前,我會解釋我需要什麼類型的需求。 在我的遊戲中,爲了玩它需要很多紋理。由於這個和ipa大小(iOS)的限制,我認爲使用assetbundle是必須的。由於現有的代碼實現,我爲1個圖像創建了資產捆綁,1個資產捆綁。例如:我有100個圖像,然後我將創建100個assetbundle(主要的屬性將是紋理),並且具有相同的名稱。哪種方式更好地處理AssetBundle下載管理

我希望我的遊戲可以離線播放AFTER用戶首次下載了所有需要的資產捆綁。因此,如果用戶第一次玩遊戲或下載我的遊戲的更新版本,遊戲將被強制進入特殊場景,在那裏它將下載所有需要的資產捆綁,之後,用戶可以在沒有互聯網連接的情況下玩遊戲。

我想有2種關於如何下載這些assetbundle方式:

  1. 的正常方式:我把我的服務器上的所有100個assetbundles,並把1個XML文件,其中包括所有assetbundles信息及其版本。在特殊場景下,遊戲將下載xml文件,並通過WWW.LoadFromCacheOrDownload下載100個資產捆綁。目的只是將所需的資產捆綁存儲到遊戲緩存中。成功下載後,用戶可以離線播放,如果遊戲需要加載資產捆綁,那麼我只需要打折WWW.LoadFromCacheOrDownload,因爲它仍然在緩存中,可以離線播放。當然,只要我沒有明確地清除緩存,我認爲緩存仍然存在。

  2. 困難的方法:我會將所有100個assetbundle壓縮到1個zip文件。遊戲將下載xml文件和zip文件。我將解壓zip,並將所有100個assetbundle放入移動存儲(iOS和Android)。那麼在這之後,如果遊戲需要加載資源,我只需撥打WWW.LoadFromCacheOrDownload,URL是使用file:///方案指向移動存儲的路徑。

摘要:

正常方式:

減:我認爲緩存仍然存在,但如果有什麼不對在緩存中,用戶不能玩遊戲。

加:簡單的實現,因爲假設緩存會很好。

困難的方法:

減:嗯,我不知道它是零下點或不是,但是這一次,我要實現未存檔的壓縮文件,將它們存儲在存儲。在服務器端和應用端需要更多的實現。由於我是新手,我不知道這方面的最佳做法。

再加上:更堅固

那麼哪一個更好?還是有更好的建議?

回答

2

我們基本上爲您的應用程序實施了正常和艱難的組合方式。和你的一樣,它的質地很重,所以大多數紋理資產都被打包到自己的資產包中。 (在我們的應用程序紋理中有一個邏輯分組,因此我們不會單獨打包它們)。然而,我們不直接將它們下載到緩存。我們將這些下載到SD卡,然後從那裏加載它們(或從緩存中獲取它們),因爲我們需要它們。 (即LoadFromCacheOrDownload)。

這取決於你的情況,但我通常建議不要將它們打包成一個zip文件。主要關於更新。在我們的案例中發生的情況是,資產需要更新,或者我們希望稍後添加資產。通過使XML文件或數據庫包含版本控制數據,更新設備上的數據很簡單。如果只有一個軟件包發生變化,您只需要下載該軟件包。而在我們的情況下,2MB與450MB是完全不同的。

+0

是的,我認爲你對「將它們打包成一個zip」是正確的。謝謝你的回答,它真的幫助我:D –

相關問題