MEGALOVANIA MEGALOVANIA

游戏开发中

目录
CPKA开发日志 其六
/      

CPKA开发日志 其六

工作日志

  • 将完整的 CuteAnimal 里做过的角色框架迁移过来了,另外做了些修改
    • 发现还是没办法不依赖外部库,比如说 odin 之类的,不然有些配置项要写 Editor 实在是太痛苦
    • 给 AnimMgr 添加了一些功能,比如说当播放一个需要指定动画播放时间的动画的时候,可以根据输入的时间进行时间缩放
    • 另外一个问题是,如果时间加速太快,碰撞可能会有问题,这个应该看一下成熟的方案是怎么解决的,因为观察下来似乎 TCF 的解决 Trace 的方案并不是单纯激活/禁用碰撞体
  • 修改了的部分
    • 将 CharacterInstaller 做 Install 的部分改成了用类型,其实本来只需要一个类型就足够了

    • 按照 Zenject 的开发规范,依然没有控制 Component 中 Start 逻辑顺序的好办法.而在 InstallBinding 之后的同一帧是没法拿到 Injection 对象的,所以也没办法显式调用

      • 突然想到一个办法,可以在 Installer 中的 Start 中显式调用需要初始化组件的 Init,也算是个没办法的办法把
    • 把 NavmeshAgent 换成了 AIpath,可喜可贺,好用多了

    • 做了一个简单的生成组件的方法,不用自己一个个挂了,具体写在了 CharacterInstaller 里,只要挂一个 CharacterInstaller,就可以生成下面一堆组件

      • (只是加个大概,细节一些属性啥的自己调整吧,懒得写了
    • 做了一个简单的技能编辑器,或者说叫做技能配置器,思路是通过 Timeline 配置好一个 Track,然后在动画播放的时候读取这个 Timeline 的配置,来设置某些事件

      • 目前只实现了一个事件,就是设置武器的 Collider 的 Enable 和 Disable
      • 写了一个根据 WeaponDataAsset 生成 Timeline 的方法,防止手动设置
      • UnityAnimationEvent 真的很脑瘫,寻找替代方案了

    • 后续优化技能编辑器的方向:

      • 把那个恶心的动画事件干掉,寻找替代方案,包括代码里硬编码的一些内容
      • 读取配置变成一个提前在运行时之前序列化好的东西
      • Timeline 能够还原真实 Runtime 的东西,也算是一种反序列化把(这可能是最难的部分了
  • 为镜头添加了一个滚轮缩放的功能,聊胜于无

优化事项

  • Actor 框架并没有预想中植入得那么快,还是存在很多莫名其妙歪七八糟的问题,还不够好
  • 劳逸结合的情况下工作效率其实也并不低
  • 还遗留一些核心要啃下来的框架,不啃短期没什么影响,但是长期来看,啃有必要,比如
    • Zenject:啃完估计对 C#反射相关的玩法炉火纯青了
    • Playable:虽然这一坨像答辩,但是目前我对动画要求变高的情况下,不啃基本上不大可能

今日目标

  • 继续完善 Actor 框架
  • 完成游戏控制队列部分

标题:CPKA开发日志 其六
作者:matengli110
地址:https://www.sunsgo.world/articles/2024/03/28/1711601548807.html