【AssetBundle】八:AssetBundle的獲取加載方式

這一節我們詳細扒一扒AssetBundle包的使用:

【AssetBundle】八:AssetBundle的獲取加載方式
先來看看AssetBundle類爲我們提供的靜態方法。

1.AssetBundle.LoadFromFile:從磁盤上同步加載一個AssetBundle資源。

就是本地加載咯?我們在前面幾篇博文中使用的就是這一種加載方式,只要我們指定了正確的路徑和文件名,相應的AssetBundle資源包就會被加載到我們的內存中等待使用。

2.AssetBundle.LoadFromMemory:從內存中同步加載一個AssetBundle資源。

這個方法就有點耐人尋味了,就納了悶了,什麼樣的AssetBundle會放在內存中呢?看了官方的示例,有些明白了:

【AssetBundle】八:AssetBundle的獲取加載方式

看介紹說的是使用這種方法可以從字節數組中獲得一個AssetBundle對象:當你下載了加密的數據並且需要通過未加密的字節將它轉換成一個AssetBundle對象時會起作用。

通過下面的代碼我們可以進一步理解:我們通過調用一定的方法,從網絡上獲取到的AssetBundle包其實是字節數組,獲取到的這個字節流是放在我們的內存中的,但是我們使用AssetBundle的時候需要的是AssetBundle對象,這個時候就需要從字節數組轉換成AssetBundle對象,這就是AssetBundle.LoadFromMemory起到的作用。

3.UnityWebRequest:

在一開始學習unity的時候,經常能看到使用WWW類來加載網絡資源,不久前發佈的Unity 5.2開始使用UnityWebRequest來加載網絡資源了,通過UnityWebRequest.Get()方法,可以從指定服務器地址獲得返回值類型爲UnityWebRequest的對象,再通過上面的方法就可以獲得我們需要的AssetBundle包了。

4.AssetBundle.LoadFromStream:從流中加載AssetBundle包

遊戲資源打包到各個平臺,會存放在相應的路徑下:

Application.dataPath
Application.streamingAssetsPath
Application.persistentDataPath
Application.temporaryCachePath

其中,Android下的Application.streamingAssetsPath路徑的資源只能通過www來加載,而且是通過Stream(流)的方式加載的,加載完成之後我們就可以再使用LoadFromStream方法轉換成AssetBundle對象。

我們還看到,加載資源的方法還有相對應的異步方法供選擇,只是返回值類型不同。

不同的加載方式要依據不同資源的提供形式來選擇,比如編輯器模式下要加載本地的資源,直接使用LoadFromFile方法即可,不用捨近求遠通過web請求來加載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章