1)、简介
2)、面板参数
3)、API
举例:
混合播放,预留之前动画的一部分和将要播放的动画混合后再播放,有播放过渡的意思
举例:
void CrossFade( "动画片段的名称" , int fadeLength, PlayMode.StopSameLayer );
// fadeLength (与之前的动画片段融合的百分比)
CrossFadeQueued
动画过渡播放的序列设定
举例:
AnimationState CrossFadeQueued( "动画片段的名称", int fadeLength, QueuedMode.CompleteOthers );
// QueueMode(CompleteOthers、PlayNow)
AnimationState this[string name];
4)、辅助类
用于监视当前Animation播放的动画切片的状态
功能
name(动画片段的名字)
clip
动画片段
AnimationEvent pEvent = new AnimationEvent();
pEvent.name = "Fun";
time(返回当前动作切片被播放了多久,单位是秒)
time/length(计算出动画片段播放了几遍)
返回当前动作切片被播放了多久
单位是总时间的百分比
length
返回当前切片的总时间长度,单位是秒
speed
可以获取或者设置当前切片的播放速度
> 1(加速播放)
0~1(减速播放)
normalizedSpeed
可以获取或者设置当前切片的播放速度(百分比制)
wrapMode
获取或设置当前切片的循环状态
Default
Once(只播放一次)
Loop(循环播放)
PingPang
ClampForver(播放到最后一帧的时候,会循环播放最后一帧)
5)、切片的装载
6)、动画事件
简介
我们可以为每个动画切片添加一些根据播放时间来确定的方法,让动画播放到我们指定的时间时激活这个方法
为了给一些动画追加特效
AnimationEvent
functionName
我们可以给这个事件添加一个需要执行的方法的名字,字符串型的
注意:事件的函数体不是说非要在我们的注册脚本中,只要是在GameObject中存在这么一个函数就行了,而且不理会他的修辞
messageOptions
设定当前事件对于注册方法的理会问题
RequireReceiver(表示必须理会这注册函数,如果没有对应的函数体在游戏个体上不存在就报错)
DontRequireReceiver(不管注册的事件函数是否存在,不存在也不报错,存在就执行)
time
用于设定当前事件在对应的AnimtionClip中执行时间点
注意:时间一定要在当前切片的时间范围内
事件执行函数的参数
类型(int、float、string、UnityEngine.Object)
定义
对于这个参数你只能定义一个,意识就是上述类型中你自己选一个类型
注意:Object类型指的的是Unity引擎的任意类型,不是C#语言的任意类型
获取
你定义函数实现时直接写上对应类型的行参就可以获取
传递
在创建事件对象时就需要传递好实参内容,Animation组件会自动返回你传递好的参数
注意:
事件不要重复,重复就会多次执行
事件必须添加到AnimationClip中
我们可以通过AnimationClip返回对应的事件