工作日志
- 把代码拆解了下,原来臃肿的 ActionMgr 现在只有一小部分代码了.拆解出来的部分如下:
- Action 以及其继承类单独一个文件
- ActionEnergyMgr 用来管理能量
- ActionFrameRecorder 用来处理记录 Frame 的功能
- ActorNPCAIMgr 用来给 NPC 计划行动任务
- 全局拆了一个 GizmoMgr 用来处理显示角色的路径以及攻击
- 把 Testing 里的 GridMgr 拆出来了
- 代码上,把 ActorAction 的 Execute 改成了 Async task,这样可以方便地做队列动画,代码可以写成这样
1while (!IsAllActionDone())
2{
3 var action = _actorActions[currentIdx];
4
5 await action.Execute();
6
7 currentIdx++;
8}
1public override async UniTask Execute(Action<ActorAction> callback = null)
2{
3 handler.transform.parent.rotation = rotation;
4 handler.PerformAttack(this);
5
6 await UniTask.WaitUntil(()=>handler._animMgr.GetCurrentMontageTime()>=1.0f);
7
8 isComplete = true;
9}
-
暂停的话需要想办法让当前正在执行的 Action 停下来,对于 MoveAction,Pause 那个 DOTween 就可以;对于 Attack 这种 Montage 动画,需要让 Montage 进入暂停状态
-
拆解重新构建逻辑之后,现在的逻辑变成了:
- 游戏开始,1s 之后,NPC 规划路径
- 玩家规划路径,行动开始
- 执行每个角色的规划队列,直到玩家的规划队列执行完毕,这时候 NPC 会有两种情况:
- NPC 已经执行完毕自己的队列,那么这时候会停在那里等待玩家完成操作
- NPC 还没执行完毕,那么会在那一刻暂停
-
需要优化的逻辑部分:
- 每次回合结束以后都会规划路径,但是原有的路径不会取消,这其实有点奇怪
- 当 NPC 已经执行完毕自己的行动的时候,会等待玩家执行完毕,这也不太合理
- 玩家的武器伤害判定不是非常合理,在动画停止或者动画加速的这种情况下,动画可能没办法正确地触发 OnTriggerEnter
- 有时候还是会有一些 Bug,角色会卡住,目前原因不明,似乎跟行动距离太长有关系
- 可能有飞行道具以后这个游戏会变得更好玩一点
- 之前想的那套出招-收招打差和的游戏,感觉不是很靠谱,主要是目前看看游戏没有那么细致的操作
- 是否要有打到路径上的敌人之后将他们路径打断的功能
优化事项
- 需要先想好核心的玩法的目标需求,不然感觉现在做起来只是在对齐代码 有点混乱
今日目标
- 今天应该会和小伙伴商量一下这个项目,征兆了一个伙伴
- 好好想想接下来的需求该怎么做