第十五集:遊戲資源載入器

weixin_34019929發表於2018-08-03

AssetManager

1.API定義:負責載入類似於Textures BitmapFonts Tilemaps Sounds Music 等型別的檔案
2.示例:

val manager = AssetManager()
manager.load("456.png",Texture::class.java)
manager.unload("456.png")
manager.update()

特點:
1.載入大部分資源採用非同步載入方式,在載入的同時,不阻塞主執行緒。
2.實現引用計數,當A和B都依賴同一個資源的時候,只有在A和B都銷燬了,才會銷燬,意味著一個資源載入了很多次,在記憶體中也只有一份。
3.使用一個單一管理器來實現管理所有素材。

常用方法:
1.clear():清空和刪除所有已載入資源和預載入佇列。
2.boolean containsAsset (T asset):返回檢測是否載入了某個資源
3.String getAssetFileName (T asset)獲取資源名字,得到的是一個String型別的檔名字
4.public synchronized int getLoadedAssets ()獲取以及載入的資源數量。
5.public synchronized float getProgress () 獲取載入進度,返回值是 0.0 ~ 1.0
6.public synchronized boolean isLoaded (String fileName)返回一個布林型別,檢測傳入的檔案是否被載入。
7.public synchronized <T> void load (String fileName, Class<T> type) 將已傳入的檔名和型別載入預載入佇列,為了防止名字和型別重複,這裡需要將名字和型別都傳入。
8.public synchronized <T, P extends AssetLoaderParameters<T>> void setLoader (Class<T> type, AssetLoader<T, P> loader)
設定載入器,其實AssetManager類中,包含了需要AssetLoader物件,這樣才能完成不同型別的檔案載入,當然AssetManager也可以自定義載入器。
9.public synchronized void unload (String fileName) :解除安裝資源,如果某個資源不使用了,可以解除安裝該資源,這樣有利於遊戲流暢性。
10.public synchronized boolean update () 更新載入資源,實際上load方法只是將預載入的資源載入到了預載入佇列,實際上並沒有載入資源,使用update方法才會載入資源,呼叫該方法才能使不斷載入,儲存在預載入中的資源。

相關文章