动画系统模块解析
本文最后更新于1 天前,其中的信息可能已经过时,如有错误请留言

Tool

ExpandClass

MonoSingleton

BindableProperty

ToolFunction:计算角色与某个方向/角度的夹角,根据角色在空中高度计算初速度

GameService

InputService

InputService:从读取输入到使用输入信号中间封装处理
GetMoveHorizontalValue:返回水平方向的移动输入(只保留 X,归一化)
GetMoveVerticalValue:返回前后方向的移动输入(只保留 Y,归一化)
Move:把摇杆/按键的二维向量量化为 -1/0/1(八向/四向),常用于动画状态机或栅格移动
Shift:是否按着冲刺键(跑步键)
Interactive:交互键是否触发
Scroll:滚轮/缩放类输入的二维向量
这样,角色控制器、相机控制器等代码不用关心 Input Actions 的读值细节,也不用关心平台差异(键鼠/手柄/触屏),直接消费这些属性即可

KeyBoardUIController:这个类确保界面永远有焦点,并用 Tab 在控件间跳转、用 Enter 执行“提交/点击”,让纯键盘(或手柄)操作 UI 顺畅可用。

Event Service

没有用到,解析见阅读优秀代码 – Skyshin34的博客

TimerService

AnimacerController

为什么要分离State Machinebase和Statemachine,如果有多角色,之间的state一定有区别,但是底层是不变的,所以将来如果有其他角色可以创建更多派生自tate Machinebase的XXStateMachine

Animacer

Animacer可以创建这几种资源

ManualMixerState

手动权重混合器”——你往里放多个子动画(Clip/State),自己控制每个子动画的权重,由它把结果混成一个输出给当前 Layer。

SmoothedFloatParameter

用来平滑地把一个浮点参数从当前值推向目标值,内部用 Mathf.SmoothDamp 维护 Current/Target/Velocity 等状态;这个参数再去驱动 Animancer 的混合器(Mixer)或其它动画/逻辑数值,避免“跳变、抖动、卡顿”

比如声明了一个standValueParameter变量,把“是否站立”做成 0~1 的连续浮点(通常 1=站立、0=蹲伏)
standValueParameter.Parameter.Value = 1;默认站立
为什么做成“可复用数据”

多处共享:不仅能驱动动画权重,还可以同时插值角色控制器高度 / 摄像机高度 / 移动速度上限等,让整体“站↔蹲”统一协调。

跨状态保留惯性:切到别的状态再回来不会“跳回 0 或 1”,而是延续当前的平滑进度与 velocity,观感更自然。

AnimationClip:只有“原始关键帧数据”。

ClipTransition配方(包含 Clip + 播放参数 + 事件)。

StringAsset

“可拖拽、可复用、可比较、可查找创建的字符串标识资源”。用它把易错的硬编码字符串变成类型安全、项目可管理的资产

学习笔记如有侵权,请提醒我,我会马上删除
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇