1. 程式人生 > >Unity編程筆錄--ulua+PureMVC框架簡單熱更新使用

Unity編程筆錄--ulua+PureMVC框架簡單熱更新使用

ons data- 全部 lds center lin 腳本 mar 視圖

ulua+PureMVC框架簡單熱更新使用

前言:

1:作者官網論壇

首先介紹的是這個框架是一位大牛 駿擎【CPjarjin 寫的,據說原本是“非常多人不知道怎麽使用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、實例源代碼文件,比方:cjsonpbcpbluasproto等。

---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腳本,以PromptCtrlPromptPanel腳本為例

咱們自己寫的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文件,改動例如以下

技術分享

生成的資源文件就是UnityStreamingAssets目錄下的內容

然後生成apk。安裝到手機就可以

好了,看下怎樣生成資源文件

技術分享

這裏的資源文件前面也說了,須要打包的資源設置了AssetBundleName,生成的資源文件存儲在StreamingAssets目錄下,直接拷貝StreamingAssets目錄下全部文件到自己webserver就可以。

當然。下載這些文件須要有些擴展名權限,比如技術分享

好了。累成狗了。假設有什麽能夠交流探討的,能夠加我QQ503115254

轉載請註明出處。


Unity編程筆錄--ulua+PureMVC框架簡單熱更新使用