基于Flux扩展开发的UnityAct技能编辑器, 集成Mirror支持局域网联机
- 技能编辑器
- 战斗框架
- 联网同步
- 对象池 , 计时器 , 敌人AI, Luban表格配置
项目内的美术素材仅供演示使用, 禁止用于商业相关.
本项目Mirror的高度绑定,联网代码比较麻烦
为此拆分出单机版本:XCSkillEditor_Local
Unity版本建议2020.3以上
- 技能序列化 : 核心思路就是拆解和序列化,将技能拆为动画,位移,生成对象和子技能等事件,提取序列化信息,保存在预制体中。
- 技能释放 :读取技能数据反序列化,得到技能事件队列,每帧检测事件队列,事件从start帧开始触发, 直到所有事件完成。 知乎专栏
- 同步思路:
- 帧同步: 区分本地与联网行为,将联网行为通过Rpc模式通知客户端,客户端在本地模拟表示效果。
- 位置同步:为了避免闪现卡顿,使用位移偏移量计算位置,并最终与实际位置做插值做平滑。
- 技能同步:只需要提取释放前的位置和方向和技能id,将数据发送给服务端,再由服务端转发给客户端
想要技能连招丝滑,打击感,则必须要需要很多参数,利用luban表格配置
如破甲值,击飞时间,击飞高度&水平距离,顿帧时间,以及击中特效/音效等,每段攻击都有区别。
- 击退击飞思路:利用dotween动画制作 b站专栏
- 敌人霸体:敌人存在霸体值,受击减少霸体值,小于0是敌人动作会被打断和击飞
- 敌人ai: 抽象出敌人行为。配置成行为池,和抽卡一般,把行为按照概率随机抽空。敌人ai循环是:寻找敌人->选择行为->追踪->攻击->攻击后摇->重新选择行为
技能编辑器是为开发效率和更好的技能效果, 但编辑器需要完善细节太多,开发上要做取舍。
比如碰撞检测,就直接使用unity的碰撞的了,目前并无明显问题
资源加载用Resource梭哈了,编辑器界面用Flux改造 ,用现成的框架能省下不少时间
引用 | |
---|---|
Mirror | 网络框架 ,优点是不用写服务器代码, 缺点只适用于小型项目。 |
NaughtyAttributes | 轻量级的编辑器扩展,也推荐其作者的其他框架 |
XiaoCaoTool | 受NaughtyAttributes启发,制作的XiaoCaoWindow编辑器扩展 |
Flux | 很好的timeline编辑器工具, 用这个改造成技能编辑器 |
其他 | |
---|---|
X-PostProcessing | Luban |
框架推荐 | |||
---|---|---|---|
YooAseet | MDDSkillEngine | 烟雨et7 | TEngine |
github公开版本只有技能编辑器核心功能,完整技能没公开,
打开SkillEditor.scene
然后打开Flux:菜单Window/Flux/Open Editor
打开Flux监视器:菜单Window/Flux/Open Inspector
右上角的保存按钮
或者 在Hierarchy中选中Sequence, 右键/Xiaocao/保存选中Seq
- 一个角色有两个Animator, 是为了防止编辑器模式下Flux乱连, 在Editor场景中使用editor
- 技能id和额外的配置
一般放于Resources/SkillEffet下,当然你也可以修改成别的加载方式
加载代码可以看RunTimePoolManager的LoadResPoolObj()
- 玩家坐标系(默认): 生成物体时,以玩家的相对坐标系生成物体
- 世界坐标: 技能触发时刻的玩家坐标系,不受之后玩家移动的影响
对于玩家坐标系的物体,需要放在PlayerConstraint下
- 更改坐标系:
然后选中一个Timeline,在Flux监视器中修改
-
Resources/Charecter 角色
-
Resources/ResUsing 配置
-
技能的excel配置(Luban): 菜单Tools/配置 (需要有.net 4.0)
-
收藏夹:菜单Tools/XiaoCao/收藏夹
-
动画预览窗口:菜单Tools/XiaoCao/动画预览窗口