好久沒寫博客了,上一篇是在今年上班之前寫的
從年初到現在一篇沒寫過,每天都在加班,實在太忙了
上班半年多了,學到不少東西
今天分享一下剛寫的小功能 TweenFillAmount
用過NGUI Twnner的人看到這個名字就應該知道干啥的了
tweenPosition、tweenRotation、TweenScale、tweenColor.....
就是沒有 tweenFillAmount
因為正好要做一個類似血條過渡動畫的東西,所以就擴展了一下
時間不多,寫得不到位的地方腦補一下
首先我們新建一個UISprite
type:filled
然后我們拖動fill amount,就會看見圖片被裁剪了
我們想實現一個功能,讓他從某個值,逐漸變成另外一個值
這個其實自己實現起來也很簡單,不過為了統一,做一個通用的東西,總比每次都寫一次好
我們找一個tweenColor來看看他怎么實現的,代碼挺少的,還有注釋,我就不解釋了,七點半又要上班了- -
代碼看完了,在看看UISprite和UITexture的代碼
哦了,直接看代碼吧,直奔主題
1 #region HeadComments 2 /* ======================================================================== 3 * Copyright (C) 2015 Arthun 4 * 5 * 作 者:Arthun 6 * 文件名稱:TweenFillAmount 7 * 功 能:移動填充量 8 * 創建時間:2015/09/10 10:58:12 9 * 版 本:v1.0.0 10 * 11 * [修改日志] 12 * 修改者: 時間: 修改內容: 13 * 14 * ========================================================================= 15 */ 16 #endregion 17 18 using UnityEngine; 19 20 [RequireComponent(typeof(UIBasicSprite))] 21 [AddComponentMenu("NGUI/Tween/Tween Fill Amount")] 22 public class TweenFillAmount : UITweener 23 { 24 [Range(0f, 1f)] 25 public float from = 1f; 26 [Range(0f, 1f)] 27 public float to = 1f; 28 29 private bool mCached = false; 30 private UIBasicSprite mBasic; 31 32 private void Cache() 33 { 34 mCached = true; 35 mBasic = GetComponent<UIBasicSprite>(); 36 } 37 38 public float value 39 { 40 get 41 { 42 if (!mCached) Cache(); 43 return mBasic != null ? mBasic.fillAmount : 1f; 44 } 45 set 46 { 47 if (!mCached) Cache(); 48 if (mBasic != null) mBasic.fillAmount = value; 49 } 50 } 51 52 protected override void OnUpdate(float factor, bool isFinished) { value = Mathf.Lerp(from, to, factor); } 53 54 public override void SetStartToCurrentValue() { from = value; } 55 56 public override void SetEndToCurrentValue() { to = value; } 57 }
ok,掛到UISprite上測試一下
怎么樣,是不是很方便?還支持調節曲線的
以后媽媽再也不用擔心我做過渡動畫了
東西不是很難,實用就好,哈哈
以后會多抽點時間寫寫博客,歡迎大家交流
本文鏈接:http://www.cnblogs.com/shenggege/p/4798923.html