DOTween 模仿NGUI Tween
最近再做一个小的项目,只要使用的是DOTween 动画。 但是感到DOTween 在某些方面不如 NGUI的Twenn 比较好用 所以就模仿了一下
在此,请各位大神指点一下



public class HCTweenScale :DoTweener {
public Vector3 formScale;
public Vector3 toScale;
public float animTime = 1f;
Transform tr;
Transform myTransform {
get {
if (tr == null)
tr = transform;
return tr;
}
set {
tr = value;
}
}
Vector3 Scale {
get{
return myTransform.localScale;
}
}
public override void PlayForward() {
StyleFunction(formScale, toScale);
}
public override void PlayReverse() {
StyleFunction(toScale, formScale);
}
void StyleFunction(Vector3 from, Vector3 to) {
switch (style) {
case Style.Once:
One(from, to);
break;
case Style.Loop:
Loop(from, to);
break;
case Style.Repeatedly:
Repeatedly(from, to);
break;
case Style.PingPong:
PingPong(from, to);
break;
}
}
void One(Vector3 from, Vector3 to) {
myTransform.localScale = from;
myTransform.DOScale(to, animTime).OnComplete(() => OnComplete());
}
void Repeatedly(Vector3 from, Vector3 to) {
myTransform.localScale = from;
myTransform.DOScale(to, animTime).OnComplete(() => myTransform.DOScale(from, animTime));
}
void Loop(Vector3 from, Vector3 to) {
myTransform.localScale = from;
myTransform.DOScale(to, animTime).OnComplete(() => Loop(from,to));
}
void PingPong(Vector3 from, Vector3 to) {
myTransform.DOScale(to, animTime).OnComplete(() => PingPong(to, from));
}
protected override void StartValue() {
formScale = Scale;
}
protected override void EndValue() {
toScale = Scale;
}
}

public class HCTweenPosition : DoTweener{
public Vector3 Form;
public Vector3 To;
public float MoveTime=1f;
Transform my;
Transform myTransform {
get {
if (my == null)
my = transform;
return my;
}
}
Vector3 position {
get {
return myTransform.position;
}
}
public override void PlayForward() {
StyleFunction(this.Form, this.To);
}
public override void PlayReverse() {
StyleFunction(this.To, this.Form);
}
void StyleFunction(Vector3 From, Vector3 To) {
switch (style) {
case Style.Once:
One(From, To);
break;
case Style.Loop:
Loop(From, To);
break;
case Style.Repeatedly:
Repeatedly(From, To);
break;
case Style.PingPong:
PingPong(From, To);
break;
}
}
void One(Vector3 From, Vector3 To) {
myTransform.position = From;
myTransform.DOMove(To, MoveTime).OnComplete(() => OnComplete());
}
void Repeatedly(Vector3 From,Vector3 To) {
myTransform.position = From;
myTransform.DOMove(To, MoveTime).OnComplete(() => myTransform.DOMove(Form, MoveTime));
}
void Loop(Vector3 From, Vector3 To) {
myTransform.position = From;
myTransform.DOMove(To, MoveTime).OnComplete(() => Loop(Form, To));
}
void PingPong(Vector3 From, Vector3 To) {
myTransform.DOMove(To, MoveTime).OnComplete(() => PingPong(To, From));
}
protected override void StartValue() {
Form = this.position;
}
protected override void EndValue() {
To = this.position;
}
}

public class HCTweenAlpha :DoTweenerAlpha {
public float StartAlpha;
public float EndAlpha;
public float durtion = 1f;
tk2dBaseSprite _sprite;
tk2dBaseSprite sprite {
get {
if (_sprite == null) {
_sprite = gameObject.GetComponent<tk2dBaseSprite>();
}
return _sprite;
}
set {
_sprite = value;
}
}
public float GetAlpha {
get {
return sprite.color.a;
}
}
bool Forward = true;
public override void PlayForward() {
Forward = true;
StyleFunction(StartAlpha, EndAlpha, durtion, style);
}
public override void PlayReverse() {
Forward = false;
StyleFunction(EndAlpha, StartAlpha, durtion, style);
}
void StyleFunction(float fromAlpha, float toAlpha,float animTime, DoTweener.Style style) {
if (sprite == null) {
Des();
return;
}
// SetChildAlpha(fromAlpha, toAlpha, animTime, style);
switch (style) {
case Style.Once:
One(fromAlpha, toAlpha, animTime);
break;
case Style.Loop:
Loop(fromAlpha, toAlpha, animTime);
break;
case Style.Repeatedly:
Repeatedly(fromAlpha, toAlpha, animTime);
break;
case Style.PingPong:
PingPong(fromAlpha, toAlpha, animTime);
break;
}
}
//float notAlpha;
//public override void SetAlpha(float startalpha, float alpha,float animTime, DoTweener.Style style) {
// if (notAlpha == null)
// notAlpha = GetAlpha;
// if (alpha >= notAlpha)
// alpha = notAlpha;
// if (startalpha > notAlpha)
// startalpha = notAlpha;
// StyleFunction(startalpha, alpha, animTime, style);
//}
void One(float fromAlpha, float toAlpha,float time) {
sprite.color = new Color(sprite.color.r, sprite.color.g, sprite.color.b, fromAlpha);
DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, toAlpha, time).OnComplete(() => OnComplete());
}
void Repeatedly(float fromAlpha, float toAlpha, float time) {
sprite.color = new Color(sprite.color.r, sprite.color.g, sprite.color.b, fromAlpha);
DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, toAlpha, time).OnComplete(() => DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, fromAlpha, time));
}
void Loop(float fromAlpha, float toAlpha, float time) {
sprite.color = new Color(sprite.color.r, sprite.color.g, sprite.color.b, fromAlpha);
DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, EndAlpha, time).OnComplete(() => Loop(fromAlpha, toAlpha, time));
}
void PingPong(float fromAlpha, float toAlpha, float time) {
DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, toAlpha, time).OnComplete(() => PingPong(toAlpha, fromAlpha, time));
}
protected override void StartValue() {
if (sprite) {
StartAlpha = sprite.color.a;
EndAlpha = sprite.color.a;
return;
}
}
void Des() {
Destroy(GetComponent<HCTweenAlpha>(), 1f);
HCTweenTextAlpha text = gameObject.AddComponent<HCTweenTextAlpha>();
text.StartAlpha = this.StartAlpha;
text.EndAlpha = this.EndAlpha;
text.durtion = this.durtion;
text.style = this.style;
text.IsStartRun = this.IsStartRun;
if (Forward)
text.PlayForward();
else
text.PlayReverse();
}
}
tween.OnComplete = () => {
Debug.Log("这里是 回调");
}
基于某些原因 twenn 的动画方式没有写 如果各位需要 请自行添加
下面附上链接
链接:http://pan.baidu.com/s/1c0dlWkC 密码:iaue
DOTween 模仿NGUI Tween的更多相关文章
- UGUI 过渡动画插件,模仿NGUI的Tween (转载)
最近在相亲,后来好朋友跟我说他写了一个好插件,于是我就把女朋友甩了,看看他的插件,可以在UGUI制作简单过渡动画. 我看了下是模仿NGUI的Tween, 我在筱程的基础上稍微改到人性化, 简单支持的让 ...
- Unity NGUI Tween的用法
unity版本:4.5 NGUI版本:3.6.5 参考链接:http://www.colabug.com/thread-1029974-1-1.html,作者:COLABUG.COM 橘虞 htt ...
- NGUI Tween动画Scale与Transform冲突
NGUI中我们要同时完成Scale与Transform的效果,会发现动画并不是同我们想的那样运行的. 原因就是Tween Scale与Tween Transform的冲突调用. Tween Scale ...
- Unity NGUI Tween动画回调不执行问题
最近工作中遇到了一个问题 NGUI的Tween动画完成 回调函数 偶尔不执行 偶现Bug 今天我仔细看了下代码发现 TweenPosition tempTween = varTar.GetCompon ...
- Ngui Tween 组合动画 group
使用NGUI的Tween做补间动画,难免会涉及组合各种Tween.最常用的就是 Scale+Alpha组合 做淡入淡出了.那么如何控制 播放完一个Tween 后在 播放另一个Tween呢? 利用del ...
- NGUI Tween几种用法随手记
需要明确下几种动画的用法 play begin EventDelegate.add TweenPlayer ---------------------------------------------- ...
- unity3d 扩展NGUI Tweener —— TweenTime
这是今天做的一个小功能 策划想要一个时间滚动效果 那就搞呗!思路和之前写的tweenFillAmount一样 传送门:http://www.cnblogs.com/shenggege/p/479892 ...
- NGUI学习笔记汇总
NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...
- unity3d 扩展NGUI Tweener —— TweenFillAmount
好久没写博客了,上一篇是在今年上班之前写的 从年初到现在一篇没写过,每天都在加班,实在太忙了 上班半年多了,学到不少东西 今天分享一下刚写的小功能 TweenFillAmount 用过NGUI Twn ...
随机推荐
- 更改debian的软件源sources.list
之前debian6这系统是在公司装的.公司有百兆光纤,多线接入,就随便选了个源,也没多大问题.现在回到家里变成了2M的ADSL,很多软件更新不下来. 更改软件源,也就修改/etc/apt/source ...
- 原生AJAX如何异步提交数据?
AJAX概述 AJAX:Asynchronous Javascript And XML,异步的JS和XML.2001,Google为了改进搜索的用户体验,提出了GoogleSugguest效果,正式提 ...
- java与.net比较学习系列(2) 基础语言要素
这一篇从最基础的开始对比总结,说起基础语言要素,故名思义,就是学习语言的基础,主要内容包括标识符,关键字和注释.我想从以下几点进行总结,有区别的地方有都使用红色粗体字进行了总结. 1,标识符 2,关键 ...
- [转]Asp.Net调用前台js调用后台代码分享
1.C#前台js调用后台代码 前台js <script type="text/javascript" language="javascript"> ...
- oracle索引学习
查看执行状态: 选中代码直接按F5,或者点击Tools===>>Explain Plan 一.索引的注意事项: 当任何单个查询要检索的行少于或者等于整个表行数的10%时,索引就非常有用.这 ...
- 对Lucene PhraseQuery的slop的理解[转载]
所谓PhraseQuery,就是通过短语来检索,比如我想查“big car”这个短语,那么如果待匹配的document的指定项里包含了"big car"这个短语,这个documen ...
- iOS指纹识别
#import "ViewController.h" #import <LocalAuthentication/LocalAuthentication.h> @inte ...
- UIView的一些常用属性和方法
UIView的一些常用属性和方法 1. UIView的属性 UIView继承自UIResponder,拥有touches方法. - (instancetype)initWithFrame:(CGRec ...
- JS+html实现简单的飞机大战
摘要:通过原生的js+html实现简单的飞机大战小游戏效果,如图所示: 实现代码如下: 1.自己的飞机实现 飞机html: <!DOCTYPE html> <html lang=&q ...
- C++----练习
1.完成一个C++实现的加法程序: #include<iostream> int main() { std::cout<<"可以输入两个加数,本程序完成加法...&q ...