技能系统的数据结构

问题1. 技能如何储存和调用?

游戏中上百个技能是如何储存的,如果调用的,不会是一起加载,if判断一个一个的吧?

注:下方回答中蓝色的字体是我们游戏中的做法

回答一

主流的做法是通过 Add Buff 和DeBuff 来实现的,下面简单Buff的释放方式

最简单的Buff需要有如下通用属性:

1、生效时间->在添加到对象上后,作用的时间长度,一般有立即作用,延迟一段时间生效等等

2、作用时间->指该Buff在对象身上作用的时间,生效后立即完全,如普通攻击,还有持续作用的,如中毒后持续扣血,眩晕等等

3、作用对象->某些技能制定的对象的类型,如火球可能对熔岩巨人无效,就会在该中体现(注:我们的技能比较简单,Actor中有一列SkillId对应Skill表中的Id,未有此种特殊情况)

4、作用方式->Buff会修改对象的哪些属性,如果增加火系列武器攻击力,中毒Buff可能会直接扣一定量的HP,以上几种是常见的Buff属性,Debuff也类似,之前可能通过策划填表实现,现在很多团队使用 LUA 脚本来实现(注:关于如何AddBuff,我们有一张Buff表,这张表里由策划填写,比如:策划想添加一个Buff:刀系列的武器 ATK 上升 20% ,那么他只需要填写这两列:MethodName:WeapontATKUpArgs:WeaponType|UpValue[方法名 参数1|参数2],然后程序解析Tab表,通过C#的反射执行 MethodName 方法,并传入相关的参数,这样这个Buff就实现了。考虑后面的运营需求,现阶段我们也正在加入 LUA 来调用C# 的方法,达到动态更新脚本的目的)

除了 buff 之外,技能还有一些其他的要素

比如 瞬发技能,持续施法技能,每个技能还有前摇等要素需要考虑,这些通常放在每个具体的技能逻辑内实现

再有就是AOE技能,可能需要在制定的范围内查找攻击对象,这部分逻辑也会放在技能内实现,如果想了解更详细的,可以参考 Mongos的相关逻辑,国内厂商的相关逻辑或多或少和Mongos有相似或雷同。

回答二

技能是个对象,上面有些基本属性,技能只提供最基本到主流程,如引导时间,命中时间,命中次数。当技能发动时只在各个流程命中时抛出消息,各个消息节点上可以让策划插入各种事件,比如当技能读条开始时给自己加个 魔免buff,命中敌人时给自己加血,同时召唤出两个幻影。程序只需要生产,加血,分身,甚至改变天气之类的技能事件,策划通过技能编辑器组装出理论上无数种技能。(注:我们的项目现在还没做技能编辑器,现在阶段是有三张表:Skill,Buff,Bullet,具体为Skill可以AddBuff,也可以发出 Bullet,Bullet遇到Actor 引爆 再AddBuff;关于事件,Skill表有:发招前事件(包括预备动画,预备特效),发招中事件(发招中动画) 发招后事件(进入CD))

回答三

技能是通过一系列的触发条件组合起来的一个事件集合。不仅仅是BUFF这么简单,灵活点的做法是把技能描述层,技能本身属性层和效果层分开来处理。因为有时候一些道具也会产生相应的效果,这个时候单独做表就很混乱了。
然后通过ID来填写这ID对应的描述,属性和效果,研发照着ID按图索骥实现具体效果就可以了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了Unity游戏开发中外观模式是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍Unity中地面检测方案的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.普通射线在角色坐标(一般是脚底)...
这篇文章主要介绍了Unity游戏开发中如何消除不想要的黄色警告,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带...
这篇文章主要介绍了Unity中有多少种渲染队列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解
这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!了解Texture2D 如上图,Texture2D是一张
小编给大家分享一下Unity中DOTS要实现的特点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
这篇文章给大家分享的是有关unity中如何实现UGUI遮罩流光特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。下面是核心shader:Sh...
这篇文章主要为大家展示了“Unity中如何实现3D坐标转换UGUI坐标”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下...
这篇文章主要介绍了Unity游戏开发中设计模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍了Unity中如何实现仿真丝袜渲染,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了...
这篇文章给大家分享的是有关Unity插件OVRLipSync有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目需要接入对话口型动...
这篇文章主要介绍了Unity性能优化之DrawCall的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章给大家分享的是有关Unity给力插件之Final IK怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这插件有什么用:一般游...
这篇文章给大家分享的是有关Unity中如何内嵌网页插件UniWebView的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、常见Unity中内...
小编给大家分享一下Unity如何做流体物理的几个轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
小编给大家分享一下Unity中Lod和Occlusion Culling的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收...
这篇文章将为大家详细讲解有关Unity中LineRenderer与TrailRenderer有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获...
这篇文章主要介绍了Unity中coroutine问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起...
这篇文章将为大家详细讲解有关unity中spine怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。骨骼动画首先我们来看到...
这篇文章主要为大家展示了“Unity Shader后处理中如何实现简单均值模糊”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学...