您的位置:首页 > 移动开发 > Unity3D

unity3d 扩展NGUI Tweener —— TweenFillAmount

2015-09-10 19:32 531 查看
好久没写博客了,上一篇是在今年上班之前写的

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

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

今天分享一下刚写的小功能 TweenFillAmount

用过NGUI Twnner的人看到这个名字就应该知道干啥的了

tweenPosition、tweenRotation、TweenScale、tweenColor.....

就是没有 tweenFillAmount

因为正好要做一个类似血条过渡动画的东西,所以就扩展了一下

时间不多,写得不到位的地方脑补一下



首先我们新建一个UISprite

type:filled

然后我们拖动fill amount,就会看见图片被裁剪了

我们想实现一个功能,让他从某个值,逐渐变成另外一个值

这个其实自己实现起来也很简单,不过为了统一,做一个通用的东西,总比每次都写一次好

我们找一个tweenColor来看看他怎么实现的,代码挺少的,还有注释,我就不解释了,七点半又要上班了- -

代码看完了,在看看UISprite和UITexture的代码

哦了,直接看代码吧,直奔主题

#region HeadComments
/* ========================================================================
* Copyright (C) 2015 Arthun
*
* 作    者:Arthun
* 文件名称:TweenFillAmount
* 功    能:移动填充量
* 创建时间:2015/09/10 10:58:12
* 版    本:v1.0.0
*
* [修改日志]
* 修改者: 时间: 修改内容:
*
* =========================================================================
*/
#endregion

using UnityEngine;

[RequireComponent(typeof(UIBasicSprite))]
[AddComponentMenu("NGUI/Tween/Tween Fill Amount")]
public class TweenFillAmount : UITweener
{
[Range(0f, 1f)]
public float from = 1f;
[Range(0f, 1f)]
public float to = 1f;

private bool mCached = false;
private UIBasicSprite mBasic;

private void Cache()
{
mCached = true;
mBasic = GetComponent<UIBasicSprite>();
}

public float value
{
get
{
if (!mCached) Cache();
return mBasic != null ? mBasic.fillAmount : 1f;
}
set
{
if (!mCached) Cache();
if (mBasic != null) mBasic.fillAmount = value;
}
}

protected override void OnUpdate(float factor, bool isFinished) { value = Mathf.Lerp(from, to, factor); }

public override void SetStartToCurrentValue() { from = value; }

public override void SetEndToCurrentValue() { to = value; }
}


ok,挂到UISprite上测试一下



怎么样,是不是很方便?还支持调节曲线的

以后妈妈再也不用担心我做过渡动画了

东西不是很难,实用就好,哈哈

以后会多抽点时间写写博客,欢迎大家交流

本文链接:http://www.cnblogs.com/shenggege/p/4798923.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: