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/"
相關文章
相關標籤/搜索