进入正式游戏的控制脚本

两个布尔,都是true

删掉旧存档,创建一个新的

初始化玩家数据,具体实现; 这里也用到了,前面序列化相关的逻辑

完成初始化之后,会把数据存起来

把玩家数据,用二进制的方式,存到本地文件,作为存档 如果本地文件不存在,就创建即可

然后,初始化数据

加载玩家 移动速度等相关数据; 根据玩家部件数据,加载各个部件 动画的切换,使用的是有限状态机,默认是idle状态的动画

简介:

源码地址

也可以在包管理,直接搜索下载

入口

运行游戏,可以切换页签,查看当前动画播放相关

playabe实现的具体逻辑脚本:

动画节点基类 需要有端口,设置速度 而且也有对象池回收相关

基类有俩继承者,分别是单动画播放,还有混合动画播放

都会这个标签特性,表示池子属性

根据配置,这里有仨动画

初始化 inputCount里面,是有三个动画

运行游戏,创建图的命名就会出现

上下节点,还有两个port端口,用来修改动画改变的权重

切换不同的动画节点,也是需要销毁旧节点 解除跟PlayableGraph的链接,然后把节点,放回对象池

切换用了协程

单次播放动画: 如果是首次播放,就不需要销毁节点,只需要初始化,设置权重即可

混合动画,也是同理

混合动画,会传递两个动画片段

混合动画节点类,有两个初始化函数,其中一个是传递列表,另一个是单独分开两个clip片段

后者是使用的,分别传递两个动画片段

设置端口索引

动画事件的添加 是往事件字典里面加的

角色步行的时候,加上

整一个随机数,播放脚步声

脚本声资源有这些,随机播放一个

播放音效之后,也会回收资源

这个事件函数,会触发动画事件

同名的动画事件,跑步和走路的,都是这个

移动的时候,断点触发

状态切换,用了有限状态机的相关逻辑 设置默认状态是idle

默认播放idle动画

单次:

这是从配置文件,获取动画名字的接口:

默认状态下的update函数,判断输入,切换到move状态

然后,就到了移动的状态节点了; 移动状态用到了,混合动画节点:走路和跑步,走路的index是0,跑步是1; 这里是核心的修改两者权重的逻辑

移动状态初始化,默认是走路的权重

移动状态节点的更新函数; 按住LeftShift的时候,会切换;

相机的旋转和玩家角色的旋转,逻辑处理

运行游戏,角色直走的时候,移动鼠标修改镜头,角色也会跟随旋转

动画的播放速度,影响实际位移速度:

最终在这里触发