步兵 cocos2dx 熱更新(上)

2021-08-02 03:03:27 字數 1892 閱讀 5347

之前寫好的熱更,基本可以在專案中使用,接下來拿出來跟大家分享一下。

話不多說,直接進入正題。。。總感覺兩行長度差太多不舒服,現在好了。

--先解除安裝

package.loaded[model_name] = nil

--cocos路徑快取,記得清,不然直接返回快取路徑

cc.fileutils:getinstance():purgecachedentries()

require model_name

已經安裝的apk中的資源,是沒辦法變動的,所以如果不能熱更就變成了一錘子買賣,

出現問題只能重新安裝新的apk來解決問題,成本大到離譜,比如顯示出錯了~,嘖嘖。

cocos提供的assetsmanager,除了沒有做檔案完整性校驗,功能基本夠用了。

該做的處理cocos都給封裝好了,使用起來非常簡單。

基本用法

assetsmanager:setdelegate = cc.assetsmanager:new(zip_url, 

version_url,

cc.fileutils:getinstance():getwritablepath())

assetsmanager:setdelegate(onerror, cc.assetsmanager_protocol_error )

assetsmanager:setdelegate(onprogress, cc.assetsmanager_protocol_progress)

assetsmanager:setdelegate(onsuccess, cc.assetsmanager_protocol_success )

assetsmanager:checkupdate()

data/data/com.games.es(包名)/files/如果root的話可以用adb shell 進入路徑進行檢視,別人的遊戲也是一樣(手動滑稽。

保證zip內的結構是 src 和 res 這樣只要新增上搜尋路徑就可以了。

//我這邊直接寫在c++裡了a

fileutils->addsearchpath(fileutils->getwritablepath() +

"src", true);

fileutils->addsearchpath(fileutils->getwritablepath() +

"res", true);

額,有點跑題,繼續說資源打包,打包自然就是打變動的資源和新增的資源。

這個可以用自己做批處理,用比較成熟的git工具來處理,又或者肉眼處理法~

雖然都能解決問題,不過我這裡稍微說一下前兩種,

先科普一下幾個跟時間有關的屬性

atime(access

time) 在讀取檔案或者執行檔案時更改

mtime(modified time) 在寫入檔案時隨檔案內容的更改而更改

ctime(create time) 隨 inode 的內容更改而更改(寫入檔案、更改所有者、許可權或鏈結設定等)

1.批處理:基本上就是通過遞迴遍歷路徑,讀取檔案的屬性,判斷mtime,拷貝出來進行打包。

比如上次打包的時間 2017-4-8,記錄一下,下次打包時只要mtime大於這個時間拷貝出來。

批處理時可以先寫入到乙個臨時檔案,再從檔案中讀取。git * > tmp.log

see again~

之前 真愛無價,歡迎打賞~

Cocos2d x實現資源熱更新詳解

熱更新介紹 什麼是熱更新?遊戲客戶端啟動時,主動請求服務端檢查版本號,並更新資源到本地。應用場景 情況一 遊戲客戶端已經發布了,但突然發現有個比較嚴重的bug需要修復。這時需要更新遊戲的 lua 情況二 情人節到了,需要搞個活動,在遊戲中營造乙個節日氛圍。這時,需要更新遊戲資源或增加一些功能。好處 ...

cocos2d x學習資源彙總(持續更新。。。)

補充一點 我選擇cocos2d x絕不是簡單地支援國產這麼簡單,cocos2d x真的很強大。關於遊戲引擎如何選擇的問題,請大家看這個帖子。下面列出的鏈結排名不分先後,呵呵,不一定要按順序讀。具體如何讀,以後摸熟悉了再跟大家分享。0.s amazing thank you supersuraccoo...

cocos2d x學習資源彙總(持續更新。。。)

補充一點 我選擇cocos2d x絕不是簡單地支援國產這麼簡單,cocos2d x真的很強大。關於遊戲引擎如何選擇的問題,請大家看這個帖子。下面列出的鏈結排名不分先後,呵呵,不一定要按順序讀。具體如何讀,以後摸熟悉了再跟大家分享。0.s amazing thank you supersuraccoo...