KSFramework:Unity3D開發(fā)框架快速入門

KSFramework是一個Unity 5 Asset Bundle開發(fā)框架和工具集昼榛,專注于運行時熱重載境肾,使用了SLua作為腳本引擎剔难。
https://github.com/mr-kelly/KSFramework

KSFramework是一個整合KEngine、SLua和一些開發(fā)組件組成的全功能Unity 5開發(fā)框架奥喻,適合有一定規(guī)模的團(tuán)隊使用偶宫。

熱重載是KSFramework的開發(fā)重點——在不重啟游戲的前提下,重載代碼环鲤、配置表可立刻看到修改效果纯趋,最大限度的提升開發(fā)、調(diào)試的速度冷离,并且在運營階段方便的進(jìn)行產(chǎn)品熱更新吵冒。

看看Demo!

雙擊打開Assets/Game.unity場景西剥,點擊播放痹栖。

開始Game.unity后的日志輸出

這時候KSFramework的默認(rèn)Demo開始,做了這些事情:

  • 基礎(chǔ)模塊的啟動
  • Lua模塊的啟動
  • 嘗試讀取并打印Excel表格GameConfig.xlsx內(nèi)容
  • 加載UI界面Login
  • 執(zhí)行UI界面Login的Lua腳本
  • Lua腳本綁定UI控件瞭空、設(shè)置UI控件
  • Lua腳本讀取并打印Excel表格GameConfig.xlsx內(nèi)容

總而言之揪阿,這個Demo囊括了KSFramework中的幾個核心模塊的使用:

  • KEngine中的Setting模塊的使用
  • KEngine中的UI的資源加載
  • SLua腳本引擎與UI的聯(lián)合

接下來,將模仿這個Demo咆畏,創(chuàng)建/加載一個新的UI界面南捂、創(chuàng)建/讀取一個新的配置表格。

嘗試做一個公告界面Billboard

接下來旧找,我們將創(chuàng)建一個UI公告牌(Billboard)溺健,使用Lua腳本,并從配置表讀取公告內(nèi)容钮蛛。

創(chuàng)建UI資源

創(chuàng)建New Scene
KEngine-UI-Create UI創(chuàng)建UI布局
點擊Create UI后鞭缭,默認(rèn)隨機(jī)名字,把UI名字修改為Billboard
修改UI名字為Billboard愿卒,UI界面右邊帶有黃色UI標(biāo)識
編輯一下UI場景缚去,一個背景Image,兩個Label
保存一下場景琼开,保存到Assets/BundleEditing/UI/Billboard.unity
導(dǎo)出——打包AssetBundle易结,快捷鍵Ctrl+Alt+E

加載UI界面

好了,Billboard界面創(chuàng)建好了柜候,也導(dǎo)出成了AssetBundle搞动。
接下來,我們通過代碼打開界面渣刷。

編輯Assets/Code/Game.cs

在OnFinishInitModules函數(shù)的末端鹦肿,加上這樣的一句:

// 開始加載我們的公告界面!
UIModule.Instance.OpenWindow("Billboard");

完成辅柴。 打開場景Assets/Game.unity箩溃,點擊播放按鈕:

我們的UI通過AssetBundle打開了瞭吃,彈出提示找不到UI Lua腳本,接下來我們創(chuàng)建Lua腳本吧

[我們的UI通過AssetBundle打開了涣旨,彈出提示找不到UI Lua腳本歪架,接下來我們創(chuàng)建Lua腳本吧。

創(chuàng)建Lua腳本

在目錄Product/Lua/UI中新建一個lua文件
寫一段Lua代碼:UIBillboard的執(zhí)行邏輯
local UIBase = import("KSFramework/UIBase")

local UIBillboard = {}
extends(UIBillboard, UIBase)

function UIBillboard:OnInit(controller)
    self.Controller = controller
    self.TitleLabel = self:GetUIText('Title')
    self.ContentLabel = self:GetUIText('Content')
end

function UIBillboard:OnOpen()
    self.TitleLabel.text = "This is a title"
    self.ContentLabel.text = "Here is content!"
end

return UIBillboard

這段lua中霹陡,創(chuàng)建了一個Table叫UIBillboard和蚪,這個table必須有OnInit(controller)函數(shù)。它通過代碼設(shè)置了UI中的文字烹棉。

好了攒霹,接下來,我們要為策劃準(zhǔn)備配置表了浆洗。

創(chuàng)建配置表

打開Product/SettingSource目錄催束,復(fù)制一份StringsTable.xlsx,并改名叫Billboard.xlsx吧

復(fù)制一份StringsTable.xlsx

用Excel打開我們新的Billboard.xlsx辅髓,編輯我們的公告泣崩。我們大概定一下需求,我們假設(shè)寫入3條公告洛口,每次打開公告隨機(jī)顯示其中一條。每個公告凯沪,我們給它一個英文ID第焰,一列中文標(biāo)題,一列中文內(nèi)容妨马。

Excel表修改如下:

增加公告內(nèi)容
回到Unity挺举,監(jiān)測到Excel變動。點擊OK烘跺。
上一步監(jiān)測到變動湘纵,只編譯Excel表,手動執(zhí)行一些重新編譯滤淳,并生成配置表代碼
這時候梧喷,打開AppSettings.cs代碼文件,我們可以發(fā)現(xiàn)脖咐,已經(jīng)生成名叫BillboardSettings的類了
因為我們要在Lua使用BillboardSettings讀取配置表铺敌,這里需要重新生成一下SLua的靜態(tài)代碼
接下來修改Lua代碼,隨機(jī)讀取一條公告屁擅,并設(shè)置Content偿凭、Title
運行播放Game.unity,我們的公告界面完成了

公告界面完成了派歌。我們創(chuàng)建了一個UI弯囊、寫了C#和Lua代碼加載它痰哨、然后創(chuàng)建了一張配置表,再從Lua讀取配置表匾嘱,設(shè)置UI的顯示作谭。

玩玩熱重載

熱重載Lua

接著我們剛才運行的Game.unity。 我們嘗試一下對Lua熱重載:在不重啟游戲的情況奄毡,快速重載Lua代碼折欠,方便程序調(diào)試。

菜單KSFramework->UI->Reload+ReOpen:熱重載Lua腳本吼过,并重新打開目前處在打開狀態(tài)的UI界面

我們可以從菜單執(zhí)行熱重載并重新打開UI界面锐秦,或者使用快捷鍵Ctrl+Alt+Shift+R。
由于我們的Lua腳本中盗忱,每次執(zhí)行隨機(jī)獲取一條公告酱床。因此可以看到公告內(nèi)容在不停的變動著。

熱重載的實現(xiàn)趟佃,主要依賴于每個lua腳本的最后一行——return Table扇谣;C#層在執(zhí)行完Lua腳本后,會把這個返回的Table緩存起來闲昭,每次需要使用table時罐寨,直接從緩存拿;而熱重載序矩,實際就是把這個緩存table刪掉鸯绿,這樣當(dāng)需要用到這個table時,就會重新執(zhí)行Lua文件簸淀,來獲取Table瓶蝴,這樣就達(dá)到了熱重載得目的。

熱重載Excel表格

我們保持運行剛剛的Game.unity租幕,不要停止掉舷手。這時候我們?nèi)バ薷腅xcel表格。

修改Excel表格

保存后劲绪,回到Unity男窟,提示表格有改動。

發(fā)現(xiàn)表格有變動珠叔,點擊OK編譯表
從菜單中心一下重載配置表格吧
Ctrl+Alt+Shift+R刷新Lua

重載Lua蝎宇,我們的新修改的配置表內(nèi)容生效了。

至此祷安,我們的Lua和配置表的改動姥芥,都可以在不重啟、不重新轉(zhuǎn)菊花的情況下快速修改汇鞭。


KEngine策劃指南:配置表格的編輯與編譯

KEngine資源的打包凉唐、加載庸追、調(diào)試監(jiān)控

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市台囱,隨后出現(xiàn)的幾起案子淡溯,更是在濱河造成了極大的恐慌,老刑警劉巖簿训,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咱娶,死亡現(xiàn)場離奇詭異,居然都是意外死亡强品,警方通過查閱死者的電腦和手機(jī)膘侮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來的榛,“玉大人琼了,你說我怎么就攤上這事》蛏危” “怎么了雕薪?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晓淀。 經(jīng)常有香客問我所袁,道長,這世上最難降的妖魔是什么要糊? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任纲熏,我火速辦了婚禮,結(jié)果婚禮上锄俄,老公的妹妹穿的比我還像新娘。我一直安慰自己勺拣,他們只是感情好奶赠,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著药有,像睡著了一般毅戈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愤惰,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天苇经,我揣著相機(jī)與錄音,去河邊找鬼宦言。 笑死扇单,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奠旺。 我是一名探鬼主播蜘澜,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼施流,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鄙信?” 一聲冷哼從身側(cè)響起瞪醋,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎装诡,沒想到半個月后银受,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡鸦采,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年宾巍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赖淤。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜀漆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咱旱,到底是詐尸還是另有隱情确丢,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布吐限,位于F島的核電站鲜侥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诸典。R本人自食惡果不足惜描函,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狐粱。 院中可真熱鬧舀寓,春花似錦、人聲如沸肌蜻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒋搜。三九已至篡撵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豆挽,已是汗流浹背育谬。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留帮哈,地道東北人膛檀。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宿刮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容