002 Handler
那么我们先来看第一个板块。
在第一个板块的最上面,我们可以看到module Battle::AbilityEffects——
这个的意思其实是说,这一整个特性效果文件里面的内容,都是在Battle::AbilityEffects这个模块里的,我们可以把Battle::AbilityEffects叫做特性效果模块。
但是,说是这么说,其实只有第一个板块和第二个板块是在特性效果模块里的。
那么模块是什么东西呢?
说实话,你并不需要知道模块是什么东西,你只需要知道有那么一个模块,或者通俗点说,有这么一个地方,这个地方是专门用来存放特性效果的,这个地方叫做Battle::AbilityEffects。
用一个模块来存放特性效果,我只能说有利有弊吧,利的是它把绝大部分特性的代码都集合到了一起,便于管理;
而不利的是,它仅仅是把绝大部分特性的代码集合到了一起,而不是全部的特性代码,另外还有一点是它限制了可用的参数。
关于可用的参数,我们后面还会详细讲解,在这里只需要知道有这么一个东西就好了。
可用的参数可用的参数,意思就是说,并不是所有参数都是可以用的咯?
对,并不是所有的参数都是可用的。
我们都知道,写代码需要用到各种参数,但是并不是所有参数都是可用的,具体什么参数是可用的,取决于第二个板块,我们会在第二个板块中再详细说明。
我们大致浏览一下第一个板块,就可以发现它的一个基本的格式是XXX = AbilityHandlerHash.new,这是什么意思呢?
这个的意思,其实就是新建了一个Handler,你可以把它叫做特性处理程序,或者我们更加通俗的说,新建了一个特性分类。
比如说SpeedCalc,这个是跟速度计算有关的分类,跟速度计算的有关的特性就存放在这个分类里面,比如说叶绿素;
比如说WeightCalc,这个是跟重量计算有关的分类,跟重量计算的有关的特性就存放在这个分类里面,比如说轻金属;
等等。
也就是说,特性是按照类型进行分类存放和管理的。
你除了可以把Handler叫做分类之外,还可以把它叫做特性的发动时机。
比如说SpeedCalc,意思就是它里面存放的特性会在速度计算的时候发动;
比如说WeightCalc,意思就是它里面存放的特性会在重量计算的时候发动;
等等。
基于个人习惯和逻辑,在后面的内容中,我都会以Handler来称呼第一个板块里的内容。
如果我们要新建一个特性,那么第一步就是要先找到这个特性的对应的Handler,即这个特性应该放到哪里。
只有找到了对应的Handler,才能使特性正确生效;
当然这也并不是说,如果把特性放到了错误的Handler下,或者说不合适的Handler下,特性就不会生效了,也并不是,只是说如果Handler不正确的话,会产生各种潜在的问题以及未知的Bug。
目前ESS里面已经自带了很多Handler了,在后面的内容中,我会详细解释每一个Handler都是怎么回事。
那这个时候肯定就有同学有疑问了,如果已有的Handler不能满足我的要求该怎么办?
很简单,既然已有的Handler不能满足要求,那么我们就要新建Handler。
那么怎么新建Handler呢?
很简单,照它的格式来。
比如说原本有EndOfRoundEffect,这个Handler的意思是回合结束时会发动的特性效果。
那我要新建一个在回合开始时会发动的特性效果的话,就可以这样写,StartOfRoundEffect = AbilityHandlerHash.new。
当然,并不是这样写了,这个Handler就会生效了,我们还需要在第二个板块,以及其他的地方完善代码之后,这个Handler才会真正生效。
另外,写代码时空格是无关紧要的,写StartOfRoundEffect = AbilityHandlerHash.new,还是StartOfRoundEffect = AbilityHandlerHash.new,对代码的生效没有任何影响,加空格仅仅是因为美观。
下一篇教程,我们将会讲解第二个板块的相关内容。
感谢阅读。
那么我们先来看第一个板块。
在第一个板块的最上面,我们可以看到module Battle::AbilityEffects——
这个的意思其实是说,这一整个特性效果文件里面的内容,都是在Battle::AbilityEffects这个模块里的,我们可以把Battle::AbilityEffects叫做特性效果模块。
但是,说是这么说,其实只有第一个板块和第二个板块是在特性效果模块里的。
那么模块是什么东西呢?
说实话,你并不需要知道模块是什么东西,你只需要知道有那么一个模块,或者通俗点说,有这么一个地方,这个地方是专门用来存放特性效果的,这个地方叫做Battle::AbilityEffects。
用一个模块来存放特性效果,我只能说有利有弊吧,利的是它把绝大部分特性的代码都集合到了一起,便于管理;
而不利的是,它仅仅是把绝大部分特性的代码集合到了一起,而不是全部的特性代码,另外还有一点是它限制了可用的参数。
关于可用的参数,我们后面还会详细讲解,在这里只需要知道有这么一个东西就好了。
可用的参数可用的参数,意思就是说,并不是所有参数都是可以用的咯?
对,并不是所有的参数都是可用的。
我们都知道,写代码需要用到各种参数,但是并不是所有参数都是可用的,具体什么参数是可用的,取决于第二个板块,我们会在第二个板块中再详细说明。
我们大致浏览一下第一个板块,就可以发现它的一个基本的格式是XXX = AbilityHandlerHash.new,这是什么意思呢?
这个的意思,其实就是新建了一个Handler,你可以把它叫做特性处理程序,或者我们更加通俗的说,新建了一个特性分类。
比如说SpeedCalc,这个是跟速度计算有关的分类,跟速度计算的有关的特性就存放在这个分类里面,比如说叶绿素;
比如说WeightCalc,这个是跟重量计算有关的分类,跟重量计算的有关的特性就存放在这个分类里面,比如说轻金属;
等等。
也就是说,特性是按照类型进行分类存放和管理的。
你除了可以把Handler叫做分类之外,还可以把它叫做特性的发动时机。
比如说SpeedCalc,意思就是它里面存放的特性会在速度计算的时候发动;
比如说WeightCalc,意思就是它里面存放的特性会在重量计算的时候发动;
等等。
基于个人习惯和逻辑,在后面的内容中,我都会以Handler来称呼第一个板块里的内容。
如果我们要新建一个特性,那么第一步就是要先找到这个特性的对应的Handler,即这个特性应该放到哪里。
只有找到了对应的Handler,才能使特性正确生效;
当然这也并不是说,如果把特性放到了错误的Handler下,或者说不合适的Handler下,特性就不会生效了,也并不是,只是说如果Handler不正确的话,会产生各种潜在的问题以及未知的Bug。
目前ESS里面已经自带了很多Handler了,在后面的内容中,我会详细解释每一个Handler都是怎么回事。
那这个时候肯定就有同学有疑问了,如果已有的Handler不能满足我的要求该怎么办?
很简单,既然已有的Handler不能满足要求,那么我们就要新建Handler。
那么怎么新建Handler呢?
很简单,照它的格式来。
比如说原本有EndOfRoundEffect,这个Handler的意思是回合结束时会发动的特性效果。
那我要新建一个在回合开始时会发动的特性效果的话,就可以这样写,StartOfRoundEffect = AbilityHandlerHash.new。
当然,并不是这样写了,这个Handler就会生效了,我们还需要在第二个板块,以及其他的地方完善代码之后,这个Handler才会真正生效。
另外,写代码时空格是无关紧要的,写StartOfRoundEffect = AbilityHandlerHash.new,还是StartOfRoundEffect = AbilityHandlerHash.new,对代码的生效没有任何影响,加空格仅仅是因为美观。
下一篇教程,我们将会讲解第二个板块的相关内容。
感谢阅读。