ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用Unity开发高效的技能框架(1)

使用Unity开发高效的技能框架(1) 使用Unity开发高效的技能框架1初心效果展示1、技能配置总览2、主动释放模块3、被动释放模块结语初心最初是想着能有一个自己感兴趣的实际项目作为驱动力不断学习与思考即使在搬砖似的工作中也不荒废甚至更加精进开发技能。个人比较喜欢玩RPG类的游戏就想着我是否能开发出一套像拼积木一样搭建的技能系统以至于无论什么样的技能类型最终可以不用写代码只配置就可以完成。当然先是想着复刻魔兽世界里的一些技能然后结合一些游戏、动漫、影视作品发现有意思的游戏进行实现在这个过程中往往还是需要造积木的模块以及不断优化。效果展示bilibili百练成圣: Unity复刻魔兽世界BOSS阿兹塔雷克.当前BOSS战参考了魔兽世界阿兹塔雷克涉及到debuff、技能打断、阶段转换等机制。以其中一个debuff技能【虚空毒素】来举例1、技能配置总览这是技能基础信息定义了技能名、技能图标、释放CD、释放类型选目标还是选地点还是空放、最短释放距离、技能消耗default目前是消耗蓝如果需要消耗其他职业资源可以加、是否显示读条、释放时是否能旋转移动、能否被打断等等。2、主动释放模块主动释放我把它分了几个部分1Condition判断技能什么条件下可用不可用时技能处于灰暗无法点击状态2Trigger释放方式按住蓄力释放还是点了技能之后选择一个目标点放置释放还是选择一类角色、状态等对象点击释放等等3Creator这就是该技能最终被实例化成什么类型的技能目前通常时AnimatorCreator也就是基于animatorcontroller为动画控制的技能也保留了基于timeline或是引用其他实体技能的RefSkill或是完全自定义的技能实现CustomCreator在AnimatorCreator中程序逻辑则是该技能实际产生战斗逻辑的关键buff、伤害都由此处配置GameMoment选择PlayerSkillRateTrigger为1代表当前技能释放到100%进度的时候对SkilltargetData也就是当前技能释放的目标释放Single单体技能配合单体免疫类型buff的判定DamageExpression是伤害表达式树此处为空则不造成伤害而是在BattleAdditive处AddStatus添加一个状态此状态是由降低目标造成伤害60%和每秒对目标造成气血上限的5%叠加的复合状态可以看到这里DamageExpression模块是复用了前面的所有伤害表达式树均用此类3、被动释放模块这个技能由于是纯主动技能被动模块列表是空的。这里我借用另一个被动技能展示被动模块意为当技能释放者攻击时如果释放的技能有【冰霜】标签则该冰系技能会对目标附加一个减速效果持续5秒。结语这是该系列的第一篇无法将整个系统介绍全面只能以其中一个技能配置为例后续篇章会继续介绍其更深层的实现和想法。现在面临AI的冲击工作无论多难找、无论公司要求AI代码覆盖率多少但这套框架完全古法编程过去如此将来也一定是。不管新AI时代还有没有能载我的船我都用心血亲手为它搭建也希望能够在大家的意见和建议中不断优化、前行。
返回列表