在確定了我大概是要做一個(gè) 放置 + 文字冒險(xiǎn) 類型的游戲之后溅蛉,我經(jīng)過大約5秒鐘的思考轮蜕,決定還是先做戰(zhàn)斗部分滔以!主要是因?yàn)槲矣X得戰(zhàn)斗系統(tǒng)的實(shí)現(xiàn)會比較有趣诊杆,而劇情的話,有趣的部分可能更多在于劇本的編寫何陆,而不是程序功能上的實(shí)現(xiàn)晨汹。
在著手編寫這個(gè)游戲的戰(zhàn)斗系統(tǒng)之前,我嘗試著做過一個(gè)非常簡易的HTML版本的Demo贷盲。結(jié)果發(fā)現(xiàn)JS無類型的特點(diǎn)給代碼的編寫帶來了非常好的體驗(yàn)淘这。
比如說,我需要一個(gè)“戰(zhàn)斗記錄”的數(shù)據(jù)結(jié)構(gòu)用來記錄每個(gè)回合都發(fā)生了什么巩剖,此時(shí)我只需要編寫類似這樣的JSON就可以了:
{
catser = player,
target = enemy,
dmg = 20
}
隨寫隨用铝穷,非常酸爽!
然而我正打算在Unity中實(shí)現(xiàn)這個(gè)系統(tǒng)佳魔,所以我得用C#來實(shí)現(xiàn)這套東西……盡管UnityScript和JS很像曙聂,但我此時(shí)一點(diǎn)都不想用它。主要是因?yàn)槲抑皬膩頉]用過UnityScript鞠鲜,所以我并不想用UnityScript來實(shí)現(xiàn)整個(gè)項(xiàng)目宁脊,而整個(gè)游戲顯然包含了除戰(zhàn)斗系統(tǒng)之外的很多東西,這些東西我還得用我熟悉的C#來實(shí)現(xiàn)贤姆。
而我如果想用C#來實(shí)現(xiàn)戰(zhàn)斗系統(tǒng)的話榆苞,我就不得不聲明一系列這樣的東西。
class CombatRecord {
Charactor caster;
Charactor target;
float dmg;
public CombatRecord(...) {
...
}
....各種構(gòu)造方法的重載霞捡、get坐漏、set之類的東西....
}
當(dāng)然還得編寫一大堆配套類,例如用Charactor描述角色碧信,用Skill描述技能……
事實(shí)上一開始我確實(shí)是這么干的赊琳,但是沒多久我就覺得有點(diǎn)受不了了,我開始想我什么非得去編寫一堆堆的C#類來構(gòu)建一個(gè)一點(diǎn)都不靈活的系統(tǒng)音婶,今后為了繼續(xù)擴(kuò)展這個(gè)系統(tǒng)慨畸,還得編寫跟多的一堆堆的C#類。
于是我漸漸意識到衣式,我是不是應(yīng)該尋找一種辦法寸士,能夠讓我在Unity中使用一種比較靈活的腳本語言檐什,讓我從繁雜的數(shù)據(jù)結(jié)構(gòu)的編寫中解脫出來。
我的第一反應(yīng)就是lua弱卡,或者JS乃正。然后立馬又覺得應(yīng)該還是lua,因?yàn)閁nityScript本身就是某種JS婶博,偏偏我不待見它瓮具。而lua小巧而高效,而且有著非常強(qiáng)大的table能夠?qū)崿F(xiàn)各種各樣的數(shù)據(jù)結(jié)構(gòu)凡人。而且情感上來說名党,lua和游戲編程一直走得非常近。
其實(shí)以上的辯證全是廢話挠轴,真話是:我覺得我作為一個(gè)非新手传睹,與其花功夫去學(xué)并沒有什么X用UnityScript,還不如趁此機(jī)會學(xué)習(xí)一下Lua岸晦。
嗯欧啤,就這么愉快地決定了!
去Unity的AssetStore搜索了一下启上,果然有許多現(xiàn)成的lua插件邢隧。我幻想了一下在Unity中同時(shí)使用C#和lua的美好場景,徹底放棄了用C#來實(shí)現(xiàn)戰(zhàn)斗系統(tǒng)的念頭冈在。
Lua倒慧!決定就是你了!0F染浮!