Unity編程筆錄--ulua+PureMVC框架簡單熱更新使用
ulua+PureMVC框架簡單熱更新使用
前言:
1:作者官網論壇
首先介紹的是這個框架是一位大牛 駿擎【CP】 jarjin 寫的,據說原本是“非常多人不知道怎麽使用Ulua,所以搞了個演示Demo”,可是這個初衷發生了變化,突然有一個天作者發現非常多人基於這個Demo去做遊戲了。這出乎作者的意料。在此希望這個框架會越來越好。
眼下為止這個框架是全然免費的。
官網地址:http://www.ulua.org/
近期剛剛開了一個論壇,大家不懂的能夠去看看,論壇地址:http://bbs.ulua.org/
2:關鍵詞解釋
Lua:先看下百度百科裏面對lua的解釋: http://baike.baidu.com/link?url=NkoserYmDEvJUz4RA-Dny3h6NP9oCW7--MPfnuO4NsvF3647QEopcYBwxHvBqzXemZuDjiFEcGkUbJ4mr0Camq
看完之後就大概對lua有了一個理解了,簡單來說就是用來熱更新。ulua是當中的一個版本號。
PureMVC:這是簡單小型的MVC框架,詳細請看百度百科:http://baike.baidu.com/link?url=3KyH_hz5ZY6WOVCZZTjd8FtCckkxSFa320jF8HivQhVuDQv_RDY6U95HxmyJDNyb7CTMVRDbHyRcpGPWhwZ1s_
這個框架裏面都集成了。這裏僅僅介紹此框架與Unity之間的結合使用。
3:準備資源:
框架下載地址:http://www.ulua.org/simpleframework.html 下載Simple Framework Github地址選項中的 SimpleFramework UGUI 選項。
4:基礎知識:
ulua/cstolua使用基礎:http://bbs.ulua.org/dispbbs.asp?boardid=2&Id=27
SimpleFramework NGUI/UGUI基礎知識 boardid=3&Id=24">http://bbs.ulua.org/dispbbs.asp?
boardid=3&Id=24
正文:
該project基於Unity 5.0 + UGUI + cstolua構建
server端基於VS2012及其以上版本號。
假設低於版本號要求的話。可能會出現故障
完成下載後用Unity打開此project文件,
文件夾結構例如以下:
1:打開login場景後,有一個比較easy出問題的地方。你是以什麽終端執行的就要切換對應的平臺。假設其中切換平臺,須要註意一些文件的刪除和又一次生成。
以Android為樣例:切換Android平臺
點擊Gen Lua Wrap Files生成對應lua基本腳本,打開Assets/uLua/Source/LuaWrap文件夾,你能夠看到生成的一些文件。是不是這些文件的名稱是否眼熟。
假設要切換平臺,首先須要把這些LuaWarp刪除掉
然後選擇對應的平臺。選擇好之後再反復上面的步驟生成Wrap文件
2:想要執行這個demo,還須要一個步驟,生成對應的資源文件,
對應的。假設你要切換平臺的話,這裏的文件你也須要刪除,先看下生成之後是什麽樣子
把這些文件刪除了就可以。
3:點擊執行程序
這是此框架給的Demo,並且還有serverSocket監聽button點擊事件。這裏的server是在下載文件中,與Assets同級文件夾Server,打開
~\SimpleFramework_UGUI-master\Server\Server\bin\Debug\SuperSocket.SocketService.exe文件
輸入r就開啟socketserver了,我在這裏熱更新使用的webserver,會在後面介紹到。這裏不過演示demo中的server
server啟動之後。回到Unity又一次啟動遊戲(先啟動server再啟動client)
點擊Buttonbutton就會收到來自server端的信息
看下server端
收到了client的信息。
4:先來簡介ulua腳本之間的關系
在項目的根文件夾下的Lua文件夾下差點兒都是lua腳本,當熱更新的時候這些都須要生成出來,然後放置到webserver端供更新。關於更新的詳細細節在論壇裏面有介紹:http://bbs.ulua.org/dispbbs.asp?boardid=3&Id=24
Lua:框架自帶的Lua源代碼文件夾。用戶自己定義的Lua腳本也就是放在這裏面,最後打包的時候,打包腳本會將其按文件夾結構生成到StreaminAssets文件夾裏面去。然後在將其上傳到遊戲的Webserver上面,用於準備被每一個遊戲client下載更新他們本地的Lua腳本。達到熱更目的。
---3rd:裏面是第三方的一些插件lua、實例源代碼文件,比方:cjson、pbc、pblua、sproto等。
---Common:公用的lua文件文件夾,如define.lua文件。一些變量聲明,全局配置等,functions.lua經常使用函數庫,通訊的protocal.lua協議文件。
---Controller:控制器文件夾,它不依賴於某一個Lua面板,它是獨立存活在Luavm中的一個操作類。操作數據、控制面板顯示而已。
---Logic:文件夾裏面存放的是一些管理器類,比方GameManager遊戲管理器、NetworkManager網絡管理器,假設你有新的管理器能夠放到裏面。
---System:這個文件夾是cstolua的系統文件夾,裏面存放都是一些經常使用的lua類。為了優化lua調用速度,用lua重寫的unity經常使用類。
---View:這是面板的視圖層。裏面都是一些被Unity調用的面板的變量,走的是Unity GameObject的生命周期的事件調用。
5:先來看看demo中的lua腳本,以PromptCtrl和PromptPanel腳本為例
咱們自己寫的lua腳本能夠以這兩個腳本為模板
能夠看到這裏面的寫法類似於javaScript,這是因為在Lua目錄下集成了一些方法,這樣寫起來比較方便。
假設我們自己寫,須要註意改動下面幾個文件
比如自己定義AdamCtrl放置於Controller目錄下。依照模板構建自己的lua腳本, 打開define.lua腳本。為CtrlName加入AdamCtrl
打開CtrlManager.lua,加入例如以下
打開GameManager.lua腳本,改動例如以下
有的時候須要Panel文件,有的時候不須要,看自己需求所定
到這裏。基本上lua就幾乎相同了,這是創建一個新的lua怎樣增加到框架中。如今看看怎樣進行熱更新。
6:公布能夠熱更新的apk
首先把平臺轉換為Android平臺,又一次生成Wrap File的文件,把StreamingAssets目錄整個的刪掉,這裏熱更新更新的是demo中的樣例,界面上顯示出來東西,就說明已經熱更新出來了。
這裏要涉及到打包資源的問題,打包的資源須要設置AssetBundleName才幹夠自己主動打包,比如Assets/Examples/Builds/Prompt/PromptPanel.prefab進行打包。
只是咱們如今不須要打包,先把StreamingAssets目錄整個刪掉。
打開Scripts/ConstDefine/AppConst.cs文件,改動例如以下
生成的資源文件就是Unity下StreamingAssets目錄下的內容
然後生成apk。安裝到手機就可以
好了,看下怎樣生成資源文件
這裏的資源文件前面也說了,須要打包的資源設置了AssetBundleName,生成的資源文件存儲在StreamingAssets目錄下,直接拷貝StreamingAssets目錄下全部文件到自己webserver就可以。
當然。下載這些文件須要有些擴展名權限,比如
好了。累成狗了。假設有什麽能夠交流探討的,能夠加我QQ:503115254
轉載請註明出處。
Unity編程筆錄--ulua+PureMVC框架簡單熱更新使用