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

时间: 2024-12-14 18:26:42

unity3d 扩展NGUI Tweener —— TweenFillAmount的相关文章

unity3d 扩展NGUI Tweener —— TweenTime

这是今天做的一个小功能 策划想要一个时间滚动效果 那就搞呗!思路和之前写的tweenFillAmount一样 传送门:http://www.cnblogs.com/shenggege/p/4798923.html 时间格式:00:00:00 以下是代码,可以结合上文的链接一起看 1 #region HeadComments 2 /* ======================================================================== 3 * Copyr

unity3d 扩展NGUI —— 限制UI点击响应间隔

当某个按钮按下后给服务器发送某条消息 如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据 不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的bug 所以,限制UI点击相应间隔的小东西就诞生了 当然,你也可以用其他一些方法来实现,不一定非要用我这种方法 如果有好的方法还请在下面留言也跟我分享分享,哈哈 先理清思路: 第一步:我们要让一个按钮无法点击怎么办? 不添加BoxCollider不就行了!! 第二步:我们怎么知道按钮有没有被点击呢?改UIButton的代

Unity3D在NGUI中使用mask

过程是这样的:最近一直想做一个头像的mask效果,后来发现原来unity的mask需要用shader来写,网上找了不少资料,也能实现,不过大多数都是用render texture作为相机投影的texture.然后把这个相机的图像作为一个material,然后在ngui中创建一个texture,把这个material赋给texture.怎么说呢,这种方式虽然也能实现,但是必须要创建一个相机,对于一个大型项目来说有点不切实际.一个头像加个mask多简单的一件事,肯定有更好的办法. 最终还是找到了一种

[Unity3D]Unity3D叙利亚NGUI血液和技能的冷却效果

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:

Unity3D使用NGUI实现简单背包功能

前话 在许多类型游戏中我们经常会使用到背包,利用背包来设置相应角色属性,多了背包也会让游戏增色拓展不少. 那在Unity3D游戏开发中该如何编写背包系统呢?因为有高人开发了NGUI插件,因此我们进行简单编写代码设置即可实现一个简单的背包功能了. 准备工作 新建一个工程PackageDemo 导入NGUI包(最新版3.9.8版的正版89刀) 准备好图片素材,使用NGUI将其打包成图集 背包 背包格子 物品 简单背包功能实现 第一步,添加NGUI控件,使用素材 项目目录以及场景列表如下: 要注意的是

Unity3D 之NGUI各种脚本及应用

这里来介绍一下NGUI的各种脚本的作用,以便以后需要某种效果的时候,去添加相应的脚本去实现效果 UIButton --> 按钮脚本 UIPanel   --> 面板脚本 UIToggle --> 自动开闭脚本 UISlider  --> 滑动条脚本 UIInput  --> 输入框脚本 UISprite -->精灵脚本 Typewriter Effect -->写入文字效果

Unity3D 新版NGUI事件添加

在新版的NGUI中,事件机制发生了变化,添加的事件的方式也与之前有所差别了. 我们来看看普通的控件事件: 1.不带参数的事件,例如UIButton,如下图所示: 在UIButton中,我们只需要拖动包含事件处理的脚本到OnClick上面,然后勾选处理事件的函数即可. 2.带参数的事件 在很多事件中,我们需要了解到某些参数的变化,来做一系列的操作的,例如UISlider,UIToggle等,如下图所示: 大家可以看到,在UIToggle和UISlider上的事件更改为On Value Change

Unity3d中NGUI加强版血条(Healthbar)的制作

这阵子项目中需要用到一种特殊样式的血条.描述如下: 1. 正常颜色为红色.受到伤害后,即将扣除的血量变暗(暗红色),并有下降动画效果: 2. 加护盾效果后,增加一部分血量值,该额外部分为白色,护盾效果消失后该部分血量瞬间消失: 3. 在护盾效果下受到伤害时,首先扣除白色血量.白色血量不足扣除时,余下部分从红色血量中扣除: 4. 白色血量的扣除效果为变为灰色并有下降动画效果: 4. 当加护盾效果时,若即将添加的白色血量将使总血条“溢出”,从新计算百分比并排满血条: 5. 中毒时,将相应的血量(按照

NGUI使用教程(1) 安装NGUI插件

前言 鉴于当前游戏开发的大势,Unity3d的发展势头超乎我的预期,作为一个Flash开发人员,也是为Flash在游戏开发尤其是手游开发中的地位感到担忧....所以 近期一段时间都在自己学习unity3d,技术仅仅有不断学习才干跟上迅猛的计算机潮流,所以博主写这篇文章即是自己学习的笔记又是把自己的心得作为一个分享...写的不好之处,还请大家体谅而且给予指正. 闲言少叙,书归正传,我的使用的是unity4.2,大家能够去官网下载最新版本号的http://unity3d.com/unity/down