不知道大家游戏的技能编辑器是怎么实现的呢,可能不同类型的游戏,技能编辑会有很大的不同吧。下面就介绍一个《龙之谷》手游作为一款经典的 ARPG 游戏,技能编辑器是如何实现的。
技能编辑器界面预览
在unity对应的编辑器
数据保存格式-xml
龙之谷的技能编辑生成的中间数据是 xml,用来供游戏逻辑来读取,进一步实现相关的逻辑。客户端使用System.Xml.Serialization.XmlSerializer序列化解析xml,服务器使用tinyxml来解析xml
技能编辑是基于帧率的,游戏锁定在30帧。 技能编辑器总体设置镜头FOV, 配置文件的物理位置, 技能的长度, 技能使用的animation动画等。
龙之谷的技能类型由三种类型:JA(普通技能), Arts(大招),Combine(组合技能) ,下面主要介绍Arts类型的技能为切入点,介绍龙之谷技能的实现方式。
龙之谷技能编辑器的实现是基于Unity Editor扩展实现的。策划在编辑器里编辑,编辑好之后保存成xml格式。 运行时读取xml。 运行时又区分在unity里预览编辑器里效果和游戏实际运行的效果。
下面的配置是基于帧率实现的:
Result 技能作用效果
配置打击点 子弹效果
伤害范围一共分为两种Sector Damage勾选上表示扇形(配置360度就是圆形了)和方形
扇形和方形的范围计算参照:
Hit 配置技能的打击效果
可以在hit Dummy 设置一个被打击的对象
type是被打击的效果
还可以配置一些打击使用的特效
FMOd 技能使用的音效
配置基本上播放其实帧数 还有就是fmod需要的一些参数如路径、还有频道
Fx 配置技能在某帧播放的特效
配置帧的起始位置,特效对应的prefab 地址等相关的属性
编辑器里还支持跟随效果、延时播放 transform 缩放和postion偏移
对应的代码实现
运行时有一个timer,在指定帧触发回调,不同的逻辑到通过虚函数分发到不同的脚本。