之前寫好的熱更,基本可以在專案中使用,接下來拿出來跟大家分享一下。
話不多說,直接進入正題。。。總感覺兩行長度差太多不舒服,現在好了。
--先解除安裝
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...