基于Flux扩展开发的UnityAct技能编辑器, 集成Mirror支持局域网联机,实现只通过配置就可以制作技能
主要功能:技能编辑器,战斗框架,联网同步
附加功能:对象池,计时器,敌人AI,编辑器收藏夹
Unity版本建议2020.3以上
编译报错是dll文件丢失,目前已修复
目前项目的代码和 Mirror高度绑定,耦合性比较高,不推荐移植,使用单机版本开发会更容易点
单机版本 -> XCSkillEditor_Local
项目内的美术素材仅供演示使用, 禁止用于商业相关.
1.编辑器保存技能:将技能序列化,技能分解为动画,位移,生成对象和子技能等事件,提取关键序列化信息,保存在预制体中。
2.技能释放原理:根据技能id读取技能事件序列,然后根据事件的start帧触发事件,直到所有事件完成,技能便执行结束。不同类型的技能事件在各自的类中实现。
3.同步思路:帧同步,区分本地与联网行为, 将联网行为通过Rpc模式通知客户端,客户端再从本地执行表示效果。
4.位置同步:为了避免闪现卡顿,使用位移偏移量计算位置, 并最终与实际位置做插值做平滑。
5.技能同步:技能释放前,将玩家位置和方向记录进技能信息,一并发送给服务端,再由服务端转发给客户端,客户端本地处理表现。
在SkillEditor.scene只保留了几个示例技能
效果demo展示: https://www.bilibili.com/video/BV18m4y1675a
pc试玩demo: https://share.weiyun.com/ik4O15hD)
Mirror: 网络框架 ,优点是不用写服务器代码, 缺点只适用于小型项目,如果只想单机逻辑改起来有难度。
NaughtyAttributes: 是一个轻量级的编辑器扩展,强烈推荐,也推荐它的作者的开源项目
XiaoCaoTool: 受NaughtyAttributes启发,制作的XiaoCaoWindow编辑器扩展,快速搭建编辑器窗口,也包含部分开发小工具
其他引用: Flux ,QianMo/X-PostProcessing-Library ,Luban,DoTween
其他优秀框架推荐:YooAseet ,猫刀刀的MDDSkillEngine ,烟雨的et7 ,MotionFramework
打开SkillEditor.scene
然后打开Flux:菜单Window/Flux/Open Editor
在Flux窗口选择一个技能就可以编辑了
编辑完成,就可以保存了.
保存:右上角的保存按钮 或者 在Scene里选中Sequence 右键/Xiaocao/保存选中Seq
(1)一个角色有两个Animator, 是为了防止Flux编辑时乱连, 在Editor场景中使用editor
(2)技能id和额外的配置
一般放于Resources/SkillEffet下,当然你也可以修改成别的加载方式
加载代码可以看RunTimePoolManager的LoadResPoolObj()
分玩家坐标系和世界坐标
玩家坐标系(默认): 生成物体时,以玩家的相对坐标系生成物体
世界坐标: 技能触发时刻的玩家坐标系,不受之后玩家移动的影响
对于玩家坐标系的物体,需要放在PlayerConstraint下
更改坐标系:
菜单Window/Flux/Open Inspector
然后选中一个Timeline
Resources/Charecter 角色
Resources/ResUsing 配置
其中SkiillKeyCodeSo是配置技能按键和图标和cd,没配置按键的技能则为被动技能
技能的excel配置(Luban): 菜单Tools/配置
使用的Luban,所以应该需要安装.net 4.0
收藏夹:菜单Tools/XiaoCao/收藏夹
动画预览窗口:菜单Tools/XiaoCao/动画预览窗口