Unity熱更新相關概念


熱更新實現方式

1. 使用Lua腳本編寫游戲邏輯(Lua調用C#的方式),Lua解析器(也叫Lua虛擬機)在運行時解析Lua腳本,無須編譯
2. C#反射技術
3. C#Light(什么鬼?) 

如何學習熱更新

1. 學習Lua編程
 
   關於uLua的學習,我們可以參考官網,以及官方bbs來學習。上面有詳細的視頻文字教程
 官網:http://www.ulua.org/index.html
 官方bbs: http://bbs.ulua.org/
 
2. 使用LuaInterface、Luanet進行Lua和C#交互
3. 學習使用AssetBundle進行資源更新
4. 學習Lua熱更新框架(SimpleFramework等)

熱更新流程

步驟1. 將StreamingAsset目錄下的文件,全部復制到目標平台(ios/Android)的數據目錄中(第一次運行游戲時)
步驟2. 啟動游戲前刷新所有文件夾,客戶端文件(csv文件)與服務上的文件(file.txt)對比MD5,記錄不同的文件,下載對應的文件替換,啟動場景
步驟3. 從數據目錄加載AB(使用協程不使用線程)
步驟5. 加載(和下載)AB的思路:
    (1)建立一個隊列,隊列中有加載AB的請求時,去加載,加載完成后移出隊列,加載下一個直到完成
    (2)Unity5.0之后的AB資源是分開的,加載時難以判斷依賴關系,而且AB資源在內存中只能有一個,所以使用單線程加載
步驟6. 實例化后卸載內存中的AB

uLuaFramework框架結構圖

注意的點

(1)打包時根據每個文件起對應的AB名字,記錄下MD5值和大小,保存為CSV文件(微軟的東西確實好),好處是便於看也便於改
(2)由於StreamingAsset目錄是只讀的,不能將服務端下載的文件放到里面,創建數據目錄
(3)開發用Resource加載,發布用LoadAB加載
(4)不同平台下數據目錄地址不同:
Android、IOS:Application.persistentDataPath + "LuaFramework"
Mac OS、Windows:c:/LuaFramework/
Editor:Application.dataPath + "/StreamingAsset/"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM