新元的無名殺擴(kuò)展教程(一)技能_6繼承inherit+子技能subSkill=模板技能
前言
在前面幾期中,我們已經(jīng)知道了trigger類一般技能和特殊技能的基本格式。為了節(jié)省我們編輯技能的時間,我現(xiàn)在要介紹一種方法,它的目的來創(chuàng)建一個作為技能模板的技能。
模板技能
我們創(chuàng)建一個技能模板,其目的,是為了引用它。因此他必須要兩個基本的特點(diǎn)。
1.便于引用。引用的方法就是輸入模板技能的名字(這一點(diǎn),會在inherit中講到),因此模板技能名字就必須一眼讓人知道他是什么的模板,比如,模板技能名叫trigger,但是trigger的范圍很大,就不如寫trigger_usual,trigger_limited,trigger_zhuanhuanji等等。
2.模板內(nèi)容只保留必要的,如果模板技能里面是過于詳細(xì),反而會造成諸多阻礙。因此trigger_usual中將trigger,content,filter寫上,但其中內(nèi)容不填;trigger_zhuSkill則只多加個標(biāo)簽,而filter用if語句(在前面提到過)加上player.hasZhuSkill()
多說無益,我們進(jìn)入下一個話題。
inherit繼承
繼承,這是skill的一個標(biāo)簽。
inherit:"trigger_usual",
我們只需要這樣一輸入,保存,再重啟,即可讓我們的技能繼承trigger_usual了。很簡單。
在這個新技能中,它將模板技能的trigger,filter,content全部繼承過來。
同理,你也可以寫別的技能,若你寫上
inherit:"yiji"
你這個新技能,保存,重啟,就繼承了遺計(jì)的全部內(nèi)容。

既然談到了繼承其他技能,不妨說一下游戲本體技能id,這樣對于編寫技能也更快,游戲本體的技能是很多的,可以用來借鑒。
所以我們就有這樣一個思路:對于自己創(chuàng)新的技能則繼承模板,而游戲本體有相似的技能,則繼承該技能。
無論如何繼承都是十分重要的。不要因?yàn)橹皇沁@樣一個小小的標(biāo)簽而忽視它強(qiáng)大的威力。
subSkill
我們已經(jīng)在前面了解到了subSkill即子技能,它的寫法是這樣的。
subSkill:{
usual:{},
limited:{},
zhuanhuanji:{},
}
而子技能的技能id是,主技能的id+_+subSkill中寫的id。
比如,我們模板技能的id是trigger,subSkill中寫的usual這個子技能,它的id就是,trigger_usual
這樣,我們就可以把一類技能模板寫在同一個技能中。
而且在這里,主技能除了提供一個子技能的一個位置就再無用處,子技能成為真正的主人。
但是,我們也會發(fā)現(xiàn)一個嚴(yán)重的問題,那就是子技能越多,技能編輯器就顯得有點(diǎn)臃腫了。我們不妨寫在主代碼中。
主代碼怎么創(chuàng)建技能呢?
只需要在其中輸入:
lib.skill.xx={}
寫法和以前完全相同,比如我們要寫模板技能trigger,就可以寫成
lib.skill.trigger={
subSkill:{
? ? usual:{
? ? ? ? trigger:{},
? ? ? ? filter:function(event,player){},
? ? ? ? content:function()?{},
? ? ? ? sub:true
? ? },
? ?zhuSkill:{
? ? ? ? trigger:{},
? ? ? ? zhuSkill:true,
? ? ? ? filter:function(event,player){
? ? ? ? ? if(!player.hasSkill("")) return false
? ? ? ? ? return true
? ? ? ? },
? ? ? ? content:function()?{},
? ? ? ? sub:true
? ??},
}
}
在主代碼寫上以上代碼并保存后,要在新技能中繼承它,只需要寫
inherit:"trigger_zhuSkill"
或者寫
inherit:"trigger_usual"