技能状态

技能状态是游戏里面一个比较核心的元素,是指释放一个技能后对己方或者敌方产生的效果,而这个效果一般而言会持续一定的时间,比如攻击力增加,回血,按百分比受到魔法减伤,按固定值受到魔法减伤等状态。一个完整的游戏会有很多种的技能状态,往往上百种,那么怎么实现技能状态呢?

其实可以这样来做,使用一个技能状态就相当于调用了一个状态函数,这样我们就可以把这些技能状态具体用一个一个的函数来表示,类似这样:

char skill_status_1(...,...){} //(返回值之所以为char,是因为技能释放后,会有不同的状态,比如开始,重置,结束,清理等。)

char skill_status_2(...,...){}

...

char skill_status_n(...,...){}

其中1,2,....n是状态编号。

如此一来,假如想让玩家拥有一个技能状态,只需让该玩家调用对应的技能状态函数即可,瞬间灵活方便许多。

那么,怎样在程序中根据状态编号调用想要的状态函数呢?可以定义一组能够存放这些状态函数的数组,然后根据数组下标进行调用:

vector<char (*)(..,..)> fun_list;

并通过#define add_fun_list(fun) fun_list.push_back(skill_status_##fun) 宏定义进行各种状态函数的初始化,比如:

add_fun_list(1);//初始化技能状态1

add_fun_list(2);//初始化技能状态2

add_fun_list(3);//初始化技能状态3

...

这样只需要使用fun_list[n](...,...);即可调用相应的状态函数。

你可能会想到,为什么需要给技能状态加一个编号,这样做其实是为了策划能够方便配置,策划只需要在技能表中给某个技能配置一个技能状态编号,即可让该技能释放出来的时候拥有此技能状态效果。

释放一个技能后,可能会触发一些人物状态,技能状态对应触发的人物状态一般来说也是在技能表中配置的,也可以在其他配置文件配置或者在代码中定义。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值