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

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

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

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

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

  1. unity3d 扩展NGUI Tweener —— TweenTime

    这是今天做的一个小功能 策划想要一个时间滚动效果 那就搞呗!思路和之前写的tweenFillAmount一样 传送门:http://www.cnblogs.com/shenggege/p/479892 ...

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

    当某个按钮按下后给服务器发送某条消息 如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据 不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的bug 所以,限制UI ...

  3. 跟我从零基础学习Unity3D开发--NGUI入门基础

    英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...

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

    前话 在许多类型游戏中我们经常会使用到背包,利用背包来设置相应角色属性,多了背包也会让游戏增色拓展不少. 那在Unity3D游戏开发中该如何编写背包系统呢?因为有高人开发了NGUI插件,因此我们进行简 ...

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

    ---------------------------------------------------------------------------------------------------- ...

  6. Unity3d 用NGUI制作做新手引导的思路

    一.先看下效果 Prefab结构 二.实现思路: 1.prefab上的Panel层级设置成较高 2.背景由5个UISprite拼接起来的,4个(L,R,U,D)当作遮罩,1个镂空(Hollow)当作点 ...

  7. Unity3D 之NGUI各种脚本及应用

    这里来介绍一下NGUI的各种脚本的作用,以便以后需要某种效果的时候,去添加相应的脚本去实现效果 UIButton --> 按钮脚本 UIPanel   --> 面板脚本 UIToggle  ...

  8. Unity3D在NGUI中使用mask

    过程是这样的:最近一直想做一个头像的mask效果,后来发现原来unity的mask需要用shader来写,网上找了不少资料,也能实现,不过大多数都是用render texture作为相机投影的text ...

  9. Unity3D 优化NGUI纹理

    原理就是将一张rgba 32的分成两张纹理:一张平台压缩不带alpha和一张为原图1/4大小的压缩图存储alpha信息(用r分量当alpha值),然后修改原材质的Shader传入这两张纹理. 代码如下 ...

随机推荐

  1. Javascript中replace()的一些用法总结

    关于定义 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 关于语法 stringObject.replace(regexp/substr,repla ...

  2. 烂泥:【解决】ubuntu提示ilanni不在sudoers文件中错误

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 今天在Ubuntu系统中新建一个用户ilanni,添加完毕后.在执行有关sudo的命令时,提示如下的错误信息:ilanni 不在 sudoers 文件中 ...

  3. springMVC+jsp+ajax上传文件

    工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...

  4. Spring @Transactional ——事务回滚

    工作原理运行配置@Transactional注解的测试类的时候,具体会发生如下步骤1)事务开始时,通过AOP机制,生成一个代理connection对象,并将其放入DataSource实例的某个与Dat ...

  5. A daemon process class in python

    In everbright task schedule project, we need some daemon process to do certain work, here is a examp ...

  6. django模型

    用django时,只要用到数据库就得用到模型. 一.数据库的MTV开发模式 从MVC到MTV 所谓软件架构的MVC模式将数据的存取逻辑(Module),表现逻辑(View)和业务逻辑(Controll ...

  7. uva 11572 unique snowflakes——yhx

    Emily the entrepreneur has a cool business idea: packaging and selling snowakes. She has devised ama ...

  8. Topcoder SRM 619 DIv2 500 --又是耻辱的一题

    这题明明是一个简单的类似约瑟夫环的问题,但是由于细节问题迟迟不能得到正确结果,结果比赛完几分钟才改对..耻辱. 代码: #include <iostream> #include <c ...

  9. [ORACLE错误]oracle 不能更新 PL/SQL 点击“edit data”报“ these query results are not updateable”

    你可以选择在查询语句的最后加上 for update,就可以打开编辑锁,直接修改数据. 而在默认查询下,点击Edit data,会报错:The query results are not update ...

  10. java 21-13 合并

    SequenceInputStream(Enumeration<? extends InputStream> e)           通过记住参数来初始化新创建的 SequenceInp ...