Unity開發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn)分享

本課程主要記錄了筆者項(xiàng)目初期碰到的并值得一說的實(shí)際業(yè)務(wù)問題,涵蓋了比較多客戶端框架設(shè)計(jì)的內(nèi)容,以及有效提升開發(fā)者編程體驗(yàn)的內(nèi)容。

主要包括以下內(nèi)容以及一些其他配套的小工具。

- Luban配表工具的使用介紹

-?ECS設(shè)計(jì)下的加載管理

-?設(shè)計(jì)項(xiàng)目資源規(guī)范化

-?設(shè)計(jì)本地化組件

-?C# Task使用指南

-?設(shè)計(jì)技能系統(tǒng)

-?Unity Android多渠道管理

作者L杭州某游戲公司客戶端主程

從事游戲行業(yè)六年有余肛根,目前主要在公司負(fù)責(zé)通用底層框架設(shè)計(jì),及一款手游項(xiàng)目的客戶端主程


目錄

1| Luban Excel配表工具使用推薦及總結(jié)

2| 基于ECS設(shè)計(jì)下的加載管理

3| 對(duì)資源的規(guī)范化我們能做什么

4| 如何設(shè)計(jì)本地化組件

5| C# Task指南

6| 如何設(shè)計(jì)技能系統(tǒng)

7| Unity Andorid多渠道管理

附錄1| 一些關(guān)于代碼積累的記錄

附錄2| 如何設(shè)計(jì)角色屬性組件

附錄3| CliToolkit工具

附錄4| ET Entity Tree 工具

附錄5| 內(nèi)網(wǎng)Package管理


本篇轉(zhuǎn)載自《Unity開發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn)分享》的第1節(jié)漏策。

幾乎每個(gè)游戲的制作過程中都少不了和配置打交道的需求派哲,有的是用Unity自帶的ScriptObject進(jìn)行存儲(chǔ),或者更多的是使用Excel等表格工具掺喻,二次導(dǎo)出配置文件等芭届。

每種方案見仁見智,依照不同的使用場(chǎng)景各有優(yōu)劣感耙。

一般來說數(shù)據(jù)的輸入都是由策劃來完成的褂乍,而大部分策劃非常傾向于使用Excel作為日常配置使用的工具,尤其是在需要批量拉表的場(chǎng)景下即硼,其他的方案在這個(gè)場(chǎng)景下與Excel幾乎沒有任何可比性逃片。

相關(guān)鏈接

Luban 倉庫地址

Luban 官方示例

Luban 官方文檔

Luban 簡單示例

Luban 簡單文檔

Luban Unity GUI 工具

為什么使用Luban

如果項(xiàng)目中使用Excel作為配表的載體,大部分都會(huì)選擇使用相關(guān)的導(dǎo)表工具只酥,可能是項(xiàng)目自己開發(fā)褥实,也可能是使用一些現(xiàn)成的工具,比如Git上tabtoy裂允、excel2json等相關(guān)工具损离。

但是上面這些,包括大部分自己開發(fā)的導(dǎo)表工具绝编,或多或少都會(huì)存在一些致命的限制僻澎,或者不夠通用貌踏,亦或者不夠靈活等等的問題。

一個(gè)具有普適性的配表工具需要兼容的場(chǎng)景非常多窟勃,各種語言祖乳、自定義生成模板、數(shù)據(jù)反倒拳恋、數(shù)據(jù)有效性驗(yàn)證等等。

而Luban是目前唯一一個(gè)市面上有資格成為行業(yè)配表標(biāo)準(zhǔn)的工具砸捏,未來也很難會(huì)有同類產(chǎn)品可以超越谬运。


核心功能介紹

數(shù)據(jù)有效性驗(yàn)證

這里的數(shù)據(jù)有效性不是指bool的格子填了一個(gè)int。

有效性驗(yàn)證這個(gè)問題之前讓我非常頭大垦藏,經(jīng)常出現(xiàn)策劃跑過來找你說:“我這里程序有 bug梆暖,你檢查一下”,然后花了半天時(shí)間查到了因?yàn)榕浔碇心骋恍械膇d或者關(guān)鍵數(shù)據(jù)填寫不合法掂骏。

一次兩次還可以轰驳,次數(shù)多了難免心態(tài)不好,尤其當(dāng)人員發(fā)生變動(dòng)弟灼,新來的人無法完全理解每個(gè)值的意義级解,就很容易放飛自我,最終就是事故田绑,而這些問題是可以從源頭有效切斷的勤哗。

如果你項(xiàng)目中配表的內(nèi)容存在某個(gè)地方需要相關(guān)人員記住應(yīng)該怎么配,而沒有相關(guān)自動(dòng)校驗(yàn)掩驱,那么這里假以時(shí)日一定會(huì)出問題芒划。

工具支持的校驗(yàn)器如下:

當(dāng)然,一個(gè)游戲的開發(fā)如果需要完整校驗(yàn)所有配置的合法性欧穴,上述這些校驗(yàn)器是無法完全滿足的民逼,或者說這些復(fù)雜場(chǎng)景不應(yīng)該由Luban來解決,所以針對(duì)這些場(chǎng)景涮帘,在官方示例中有一個(gè)CfgValidator來處理這種問題拼苍。

生成模板

一個(gè)合格的配表工具應(yīng)當(dāng)兼容自定義生成代碼功能,而Luban這里使用的是scriban的方案调缨。

當(dāng)你有代碼定制需求時(shí)映屋,99%的場(chǎng)景不需要改代碼生成工具的源碼即可完成定制需求。

在我整理的Luban 簡單文檔這個(gè)文檔里面包含了模板具體生成的介紹同蜻,可以加速你理解如何自定義模板棚点。在Luban現(xiàn)有的設(shè)計(jì)下,幾乎可以兼容任何場(chǎng)景(包括老項(xiàng)目的遷移)湾蔓。

復(fù)雜類型的填寫

在這個(gè)倉庫中瘫析,Luban 簡單示例的多態(tài)示例中可以很直觀地看到繼承相關(guān)的復(fù)雜類型應(yīng)當(dāng)如何在Excel中展開和填寫。

配表支持繼承在很多游戲開發(fā)場(chǎng)景中非常非常受用,比如游戲中的道具贬循、裝備和英雄類的定義一定存在共用數(shù)據(jù)結(jié)構(gòu)和特化的數(shù)據(jù)結(jié)構(gòu)等咸包,如果沒有繼承這里的代碼會(huì)非常難看,而且配表填寫的內(nèi)容也會(huì)成為災(zāi)難杖虾。

Luban支持任意復(fù)雜數(shù)據(jù)結(jié)構(gòu)的嵌套烂瘫,只有在代碼中能定義出來,Luban就能解析奇适,但是在實(shí)際使用中坟比,并不推薦使用非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu),這樣會(huì)給策劃帶來額外的填表負(fù)擔(dān)嚷往,以及部分場(chǎng)景下的代碼生成的額外工作量葛账。

數(shù)據(jù)及定義過濾

一些定義只需要在客戶端使用,或者只會(huì)在服務(wù)端使用皮仁,需要在生成時(shí)進(jìn)行動(dòng)態(tài)剔除籍琳,當(dāng)然這個(gè)功能,一般的配表工具也都支持贷祈,但Luban額外考慮到了一些場(chǎng)景趋急,比如這一條數(shù)據(jù)需要臨時(shí)注釋或者僅在測(cè)試環(huán)境下使用。

這里的 test就非常有用势誊,我們會(huì)單獨(dú)配置一套test數(shù)據(jù)宣谈,用于游戲中的核心邏輯驗(yàn)證,及測(cè)試用例的輔助配表键科,而這些數(shù)據(jù)不會(huì)出現(xiàn)在正式環(huán)境下闻丑。

數(shù)據(jù)反倒

有時(shí)候會(huì)有這種場(chǎng)景,項(xiàng)目一些配置需要在Unity等游戲引擎中完成勋颖,可能是一些技能的配置等嗦嗡,這個(gè)時(shí)候就可能需要反倒數(shù)據(jù)。

如果是一些老的項(xiàng)目需要遷移饭玲,也是一個(gè)非常合適的場(chǎng)景侥祭。

本地化

只要是配表工具,就一定繞不開本地化這件事茄厘,Luban同樣也提供了本地化的解決方案矮冬。

這里值得一提的是,Luban會(huì)將所有未加入翻譯表的key單獨(dú)輸出到指定的文件中次哈,方便檢查胎署。

其他

Luban支持的序列化格式、語言和場(chǎng)景非常多窑滞,這里不一一介紹了琼牧,僅對(duì)我目前使用中碰到的核心功能進(jìn)行介紹恢筝。


流程推薦

下面提到的內(nèi)容在Luban 簡單示例倉庫中都可以找到相關(guān)代碼。

導(dǎo)出腳本選擇

個(gè)人比較推薦實(shí)用sh作為項(xiàng)目通用導(dǎo)表工具巨坊,Windows需要配置sh文件默認(rèn)使用git bash作為打開方式即可撬槽。

這里主要考慮的是平臺(tái)兼容性問題,比如開發(fā)環(huán)境中可能有人使用的是Mac也可能是Windows趾撵,但是在部署時(shí)大部分都是Linux服務(wù)侄柔。如果每個(gè)平臺(tái)單獨(dú)維護(hù)一份腳本,加上不同環(huán)境和使用場(chǎng)景占调,這里對(duì)應(yīng)的文件數(shù)量就比較離譜了暂题。

test、dev妈候、release

建議項(xiàng)目按照這種方式來劃分配表:

- test

????- 僅在測(cè)試用例敢靡、Editor 下使用

- dev

????-僅在開發(fā)環(huán)境下使用

- release

????-僅在正式環(huán)境下使用

auto_validation

首先挂滓,我們并不希望策劃推送一個(gè)已經(jīng)被自動(dòng)流程檢測(cè)出錯(cuò)誤的提交苦银,此時(shí)需要對(duì)Git進(jìn)行Hook,核心就是提交時(shí)本地檢查一遍赶站,如果有錯(cuò)誤幔虏,禁止本次commit,將這種低級(jí)錯(cuò)誤扼殺在源頭贝椿。

watch

一般可能會(huì)有這種需要對(duì)配置熱重載的功能想括,使用watch,配合自己項(xiàng)目中的熱重載就可以做到這邊保存Excel烙博,Unity不需要重開游戲就可以直接加載到新配置瑟蜈。


以上就是《Unity開發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn)分享》的第1節(jié),此篇文章比較適合從事游戲行業(yè)的開發(fā)人員渣窜、對(duì)Unity開發(fā)感興趣的同學(xué)以及希望提升底層設(shè)計(jì)能力铺根,解決實(shí)際業(yè)務(wù)痛點(diǎn)的讀者。

讀完全篇后你會(huì)深入理解如何實(shí)現(xiàn)實(shí)際業(yè)務(wù)需求乔宿,提升底層設(shè)計(jì)能力以及部分文章的配套Demo位迂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市详瑞,隨后出現(xiàn)的幾起案子掂林,更是在濱河造成了極大的恐慌,老刑警劉巖坝橡,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泻帮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡计寇,警方通過查閱死者的電腦和手機(jī)刑顺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門氯窍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹲堂,你說我怎么就攤上這事狼讨。” “怎么了柒竞?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵政供,是天一觀的道長。 經(jīng)常有香客問我朽基,道長布隔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任稼虎,我火速辦了婚禮衅檀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霎俩。我一直安慰自己哀军,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布打却。 她就那樣靜靜地躺著杉适,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柳击。 梳的紋絲不亂的頭發(fā)上猿推,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音捌肴,去河邊找鬼蹬叭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛状知,可吹牛的內(nèi)容都是我干的秽五。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼试幽,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼筝蚕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铺坞,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤起宽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后济榨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坯沪,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年擒滑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腐晾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叉弦。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖藻糖,靈堂內(nèi)的尸體忽然破棺而出淹冰,到底是詐尸還是另有隱情,我是刑警寧澤巨柒,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布樱拴,位于F島的核電站,受9級(jí)特大地震影響洋满,放射性物質(zhì)發(fā)生泄漏晶乔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一牺勾、第九天 我趴在偏房一處隱蔽的房頂上張望正罢。 院中可真熱鬧,春花似錦驻民、人聲如沸翻具。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呛占。三九已至虑乖,卻和暖如春懦趋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疹味。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工仅叫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人糙捺。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓诫咱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洪灯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坎缭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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