這幾天體驗了一把UGUI,用起來感覺棒棒噠。直接進入正題吧,如果要寫一個全面的教程,估計還是要花點精
力,如果要寫好,就更不容易。那麼,我還是以給自己做筆記爲目的來寫這篇文章吧,還是比較適合我這種小菜的哈
哈。
本文鏈接: http://blog.csdn.net/a237653639/article/details/48577143
作者: 小明 郵箱: [email protected]
下面真的進入正題了^^
1.Animation
Animation是以前的系統遺留下來的,而在我開始學習Unity的時候已經基本上很少用這個系統了,但是現在要做UI,
而且是UGUI,那我就要重新學過。
注意:在調整曲線之前,如果你設置的是位置動畫,那麼請務必先設置好錨點自適應。不然在你設置錨點後,動畫播
放的還是設置之前的位置。(這是比NGUI坑的地方,不過注意下就好了)
下面說說Animation的一些常用操作吧:
1)曲線
說到曲線,不得不說這一點還是NGUI的方便一點,有模板。UGUI得自己調,還總調不好。不過在充分利用一些功能
後,也基本能夠達到要求,不過稍費時一點。還是直接進入正題吧。
比如我要改變Image的Color的a通道,也就是透明度。在選好Color後,會出現如圖:
在上圖中,標記的序號1 是選中的遊戲物體。2 是我們不需要的,要刪掉它們,但是在改變比如scale的時候就不能刪
除不需要的屬性了。3 是我們要改變的屬性。4 我們選中它,編輯曲線。
比如我們需要編輯一個呼吸動畫(也就是NGUI裏的PingPong)可以這樣:
1.調整最後的key的time,比如我調整爲2秒一個週期。
2.增加一個key,設置值爲value=0,time=1。如圖:
3.這個時候回出現如下圖的情況,我原來就不之所措,但是後面才知道 只要拉伸右邊與下邊的滾動條就可以再次讓
整個曲線出現在我們面前。如圖:
4.這個時候兩邊的曲線是彎曲的,但是我們想要把它們變直(讓動畫的變化率不變),右鍵中間的key,選擇
Left Tangent裏的Linear就能讓左邊曲線變直線,同樣的方法使右邊曲線也變直。如圖:
如果想要更復雜的效果,也是增加key,然後調整(通過其他的一些選項)
最後,該動畫默認是循環播放的,如果你不需要就在Project面板中找到該動畫把Loop Time勾掉就ok。
2.Animator
通過上面的操作,我們有了一個Animator Controller,並且自動掛在Image上了。下面我們打開Animator,Window-
>Animator。
我們會看到如圖:
意思就是自動播放。但是我們經常不希望自動播放,那麼可以右鍵新建一個空的狀態,並設爲默認。
下面該涉及到代碼了!!
我根據“需求”來闡述:
需求1:>_<我不想再設置參數播放動畫了
我們想再代碼中調用播放動畫,怎麼做呢?一般來說,會想到用參數,然後用SetBool,SetTrigger等,這樣也行。不
過還有更簡單的,就是anim.Play函數,直接可以播放指定動畫名,這樣就不需要設置管參數什麼的之類的多餘的操
作了。
好,接着說。如果你在播放一個動畫後,再次播放時發現,誒?怎麼不動了?那是因爲該動畫沒有退出播放,你再播
放就不起作用了。解決辦法是,在該動畫上右鍵選擇Make Transition連接到我們最開始新建的默認State(橘色的那
個),這樣在動畫播放完後,就過渡到了橘色的默認狀態了,當你再播放的時候也沒有問題了。
需求2:O(∩_∩)我想讓不同的狀態在同一個狀態機中同時播放
這時我們就可以發揮層的作用了(當然層的作用不止這個)。首先選中Layers(在左上角),會看到默認的
是Base Layer。我們新建一個My Layer,有什麼不同??答:1.名字不同 2.weight 不同 3.狀態機不同。如圖:
我們應該注意到,紅線的地方Base Layer是實心的,表示權重(weight)是1,而My Layer是空心的,表示權重爲0。這
個weight的意思就是執行百分之幾的意思,如果爲0,就是不執行,爲1就是執行完整,爲0.5,就是執行一半。現在
我們想要完整執行,那麼我們點擊設設置按鈕,設置weight爲1。
那麼下面我們可以自行按照以上所述添加要重複播放的動畫到新的My Layer層中就可以了。而調用的函數還
是anim.Play,不過這次需要兩個參數anim.Play(動畫名,層的索引),層的索引通過anim.GetLayerIndex(層名)得到。
有個問題是這麼多字符串不好管理呀,那麼可以建一個AnimatorConfig類來管理字符串,如圖:
總結:
個人還是比較喜歡UGUI,畢竟是unity親生的,相信後面會越來越好的