U3D游戏运行时资源是如何从AB中加载出来的
U3D游戲運行時資源是如何從AB中加載出來的
以安卓為例
1,游戲啟動,自定義版本管理器去安卓的持久化目錄下查找我們自定久的版本管理文件 rep.db,若該文件不存在,說明這是游戲第一次啟動,于是就把streammingAssets下的LUA文件夾和resoure文件夾及rep.db及版本號文件version.txt及資源列表文件resource_list.txt拷到持久化目錄下。
若發(fā)現(xiàn)rep.db存在,則去WEB資源服務(wù)器上取資源版本號,并與version.txt中的版本號對比,如不一致,則去對比服務(wù)器與本地的resource_list.txt(每個文件對應(yīng)一個MD5),少的刪除,多的增加,將資源從WEB服務(wù)器上拉到持久化目錄,并重新寫一個rep.db,記錄了LUA文件,資源文件的相對-絕對路徑映射,相對路徑就是資源打包時指定的資源名稱,比如打一個資源包 assets/res/pictures,下面有一組圖片,分別命名為 assets/res/pictures/grass.png,assets/res/pictures/stone.png等,并將資源名與資源包的對應(yīng)關(guān)系寫到一個配置文件 asset_2_bundle.txt中,以便加載時使用。
資源打包時,對AB包內(nèi)的資源名稱并沒有什么限制條件,既可以使用帶路徑的名稱,也可使用一個簡單名稱,但在游戲中,因為資源很多,為防止資源重名,我們要使用帶路徑資源名。
2,資源更新完畢,游戲運行,當(dāng)需要加載"?assets/res/pictures/grass.png"這張圖片時,根據(jù)這個路徑名去?asset_2_bundle.txt中去查找對應(yīng)的AB包名,然后再根據(jù)AB包名去rep.db中查找AB包在安卓上的絕對路徑名(持久化目錄下),然后createBundleFromefile創(chuàng)建這個AB包,并緩存它。然后用AB.LOADASSET("assets/res/pictures/grass.png")加載資源,
因為assets/res/pictures/grass.png這個資源名是我們在打AB包時指定的,因此AB可以找到它
?
posted on 2018-08-15 22:21 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結(jié)
以上是生活随笔為你收集整理的U3D游戏运行时资源是如何从AB中加载出来的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 待办
- 下一篇: Shadow Mapping 的原理与实