• unity3d 扩展NGUI Tweener —— TweenFillAmount


    好久没写博客了,上一篇是在今年上班之前写的

    从年初到现在一篇没写过,每天都在加班,实在太忙了

    上班半年多了,学到不少东西

    今天分享一下刚写的小功能 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

  • 相关阅读:
    设计算法,求AB两个整数集合的交集
    C++函数传递指针面试题
    C++构造函数、析构函数与抛出异常
    c++ 虚函数表解析
    c++ 对象的内存布局
    09 构造函数能调用虚函数吗?
    C++构造函数初始化顺序
    计数排序,基数排序和桶排序
    80 求论坛在线人数
    79 两个整数集合A和B,求其交集
  • 原文地址:https://www.cnblogs.com/shenggege/p/4798923.html
Copyright © 2020-2023  润新知