轉載 csdn kakashi8841 http://blog.csdn.net/kakashi8841/article/details/17599505oop
Animation Clip動畫
一個animation clip是可重用的幀集合,它以給定的幀率顯示sprite。每一幀包含的texture和可選事件。spa
可經過菜單欄「Uni2D > Create > Animation Clip」建立一個Animation Clip。.net
Animation Clip Inspectororm
Atlas 部分對象
設置 | 描述 |
Use Atlas | 這個animation clip全局的atlas。使用這個去爲animation clip的全部幀設置相同的atlas。留它爲None則會在每一個animation clip幀選擇指定的atlas。 |
Maximum Atlas Size | 全局atlas的最大大小。只有在全局atlas設置的時候這個纔可見。 |
Clip header部分blog
設置 | 描述 |
Animation clip preview | 鼠標懸停在紋理上面能夠有個快速預覽動畫 |
Frame Rate | animation clip的幀率,單位是FPS。若是你想要反轉動畫,你能夠設置這個值爲負數。 |
Wrap Mode | 這個設置描述了animation clip以怎樣的方式循環。和Unity內建的wrap mode很像:
|
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 |
嵌入的播放器部分ip
在這個子窗口,你能預覽動畫,並使用更多的回放控制。
Animation API
Uni2D提供一些基礎方法用於管理你的動畫。這些animation API雖然是C#的,不過JavaScript也可使用。
Uni2DSprite類有一個SpriteAnimation屬性,它返回一個Uni2DSpriteAnimation對象的引用。這個對象控制sprite的animation。
屬性/方法 | 描述 |
bool playAutomatically | 決定動畫是否在sprite awake以後自動播放 |
Uni2DSprite Sprite(只讀) | 這個對象正在渲染的sprite |
Uni2DAnimationClip.WrapMode WrapMode | animation怎樣循環(看Animation Clip的Inspector) |
float FrameRate | animation 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