Uni2D 入门 -- Animation Clip 和 Animation API

转自:http://blog.csdn.net/kakashi8841/article/details/17599505

Animation Clip

一个animation clip是可重用的帧集合,它以给定的帧率显示sprite。每一帧包含的texture和可选事件。

可通过菜单栏“Uni2D > Create > Animation Clip”创建一个Animation Clip。



Animation Clip Inspector

Atlas 部分


设置描述
Use Atlas这个animation clip全局的atlas。使用这个去为animation clip的所有帧设置相同的atlas。留它为None则会在每个animation clip帧选择指定的atlas。
Maximum Atlas Size全局atlas的最大大小。只有在全局atlas设置的时候这个才可见。


Clip header部分


设置描述
Animation clip preview鼠标悬停在纹理上面可以有个快速预览动画
Frame Rateanimation clip的帧率,单位是FPS。如果你想要反转动画,你可以设置这个值为负数。
Wrap Mode这个设置描述了animation clip以怎样的方式循环。和Unity内建的wrap mode很像:
  • Loop:从第一帧播放到最后一帧,然后回到第一帧继续播放。
  • Ping-Pong:从第一帧播放到最后一帧,然后从最后一帧播回最后一帧。
  • Once:只播放一次,并停在一帧,它是主帧,不一定是动画的第一帧。
  • Clamp Forever:从第一帧播放到最后一帧,并停在最后一帧。

Frame部分


设置描述
点击这两个按钮分别是上移和下移本帧
点击这两个按钮分别是在本帧上面和下面添加帧
点击这个按钮删除本帧
Frame Texture这一帧使用的Texture。None也是合法的。
Use Atlas这个atlas用于帧texture。只有在没指定了global atlas的时候,这个才是可见的。
Trigger Event勾选这个复选框,如果你想要Uni2D能在这显示此帧的时候触发事件。更多信息请看Animation API部分。
Frame Infos自定义本帧附加的信息。代表性的一个用法是这个可以作为事件数据。你能指定一个字符串,int,float或一个Unity对象。更多信息请看Animation API部分。

Action部分


设置描述
Add frame在Animation Clip结尾增加新的帧
Apply点击应用设置。由于生产一个animation clip会花费一定时间,所以不要在每次一有改变的时候就应用。
Revert取消你的改变
Force Clip Regeneration重建atlas

嵌入的播放器部分


在这个子窗口,你能预览动画,并使用更多的回放控制。


Animation API

Uni2D提供一些基础方法用于管理你的动画。这些animation API虽然是C#的,不过JavaScript也可以使用。

Uni2DSprite类有一个SpriteAnimation属性,它返回一个Uni2DSpriteAnimation对象的引用。这个对象控制sprite的animation。

属性/方法描述
bool playAutomatically决定动画是否在sprite awake之后自动播放
Uni2DSprite Sprite(只读)这个对象正在渲染的sprite
Uni2DAnimationClip.WrapMode WrapModeanimation怎样循环(看Animation Clip的Inspector)
float FrameRateanimation clip的帧率。使用这个修改动画播放的方式。负数会反转动画
int FrameCount当前animation包含了多少帧。这个数量取决于当前animation clip和当前的wrap mode。例如,一个10帧的animation clip,如果是Ping-Pong的wrap mode,它的frame count是18
int FrameIndex当前绘制帧的索引
Uni2DAnimationFrame Frame(只读)当前帧
float Time当前animation的播放时间在0到animation的长度之间。
float NormalizedTime当前动画播放时间,规范化在0到1之间。
float Speed使用speed属性控制animation的播放速度。这个将让animation time走的更慢或更快,取决于你选择的参数。你能设置到0来冻结它,-1来往后播放等等。
float Length(只读)当前播放的animation clip的长度
string Name(只读)当前播放的animation clip的名字
int CurrentClipIndex(只读)当前播放的animation clip的索引
Uni2DAnimationClip Clip(只读)当前播放的animation clip
int ClipCount(只读)附加到sprite上有多少个animation clips
bool Paused如果设置为true则暂停animation。设置为false则恢复动画。
void Pause()暂停动画
void Resume()恢复动画
void Play()从头播放当前选择的animation(默认选中的animation clip是在Sprite的Inspector的Start Clip Index值设置的)
void Play(string clipName)从头播放名字为clipName的clip。它必须已经通过手动或调用方法加到sprite上的,否则没有任何效果。
void Play(int clipIndex)从头播放第clipIndex个clip。如果索引不对,则没有任何效果。
int GetClipIndexByName(string clipName)返回名字为clipName的animation clip 的索引。如果没有这个名字的clip,则返回-1
void Stop(bool resetToMainFrame=true)停止当前动画。如果可选参数设置为false(默认是true),则sprite不会显示它的主texture,而是保持当前动画帧的texture。

Animation Events

有两种类型的事件能被animation触发:end animation event和frame animation event

End Animation Event

自动在动画或者loop结束触发。

回调方法签名:void OnAnimationEndEvent(Uni2DAnimationEvent a_oAnimationEvent)

委托:Uni2DSpriteAnimation.onAnimationEndEvent

例子:sprite.spriteAnimation.onAnimationEndEvent += myCallbak;


Frame Animation Event

触发每一帧triggerEvent参数(Animation Clip的Inspector中)设置为true的。

回调方法签名:void OnAnimationFrameEvent(Uni2DAnimationFrameEvent a_oAnimationFrameEvent);

委托:Uni2DSpriteAnimation.onAnimationFrameEvent

例子:sprite.spriteAnimation.onAnimationFrame += myCallbak;

给出的Uni2DAnimationFrameEvent对象允许你访问触发事件的frame。值得注意的是,用户定义的帧信息能从这个event中访问到。

例如,a_oAnimationFrameEvent.frame.eventInfos.stringInfo



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值