最近再做一个小的项目,只要使用的是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的更多相关文章

  1. UGUI 过渡动画插件,模仿NGUI的Tween (转载)

    最近在相亲,后来好朋友跟我说他写了一个好插件,于是我就把女朋友甩了,看看他的插件,可以在UGUI制作简单过渡动画. 我看了下是模仿NGUI的Tween, 我在筱程的基础上稍微改到人性化, 简单支持的让 ...

  2. Unity NGUI Tween的用法

    unity版本:4.5 NGUI版本:3.6.5 参考链接:http://www.colabug.com/thread-1029974-1-1.html,作者:COLABUG.COM 橘虞   htt ...

  3. NGUI Tween动画Scale与Transform冲突

    NGUI中我们要同时完成Scale与Transform的效果,会发现动画并不是同我们想的那样运行的. 原因就是Tween Scale与Tween Transform的冲突调用. Tween Scale ...

  4. Unity NGUI Tween动画回调不执行问题

    最近工作中遇到了一个问题 NGUI的Tween动画完成 回调函数 偶尔不执行 偶现Bug 今天我仔细看了下代码发现 TweenPosition tempTween = varTar.GetCompon ...

  5. Ngui Tween 组合动画 group

    使用NGUI的Tween做补间动画,难免会涉及组合各种Tween.最常用的就是 Scale+Alpha组合 做淡入淡出了.那么如何控制 播放完一个Tween 后在 播放另一个Tween呢? 利用del ...

  6. NGUI Tween几种用法随手记

    需要明确下几种动画的用法 play begin EventDelegate.add TweenPlayer ---------------------------------------------- ...

  7. unity3d 扩展NGUI Tweener —— TweenTime

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

  8. NGUI学习笔记汇总

    NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...

  9. unity3d 扩展NGUI Tweener —— TweenFillAmount

    好久没写博客了,上一篇是在今年上班之前写的 从年初到现在一篇没写过,每天都在加班,实在太忙了 上班半年多了,学到不少东西 今天分享一下刚写的小功能 TweenFillAmount 用过NGUI Twn ...

随机推荐

  1. 更改debian的软件源sources.list

    之前debian6这系统是在公司装的.公司有百兆光纤,多线接入,就随便选了个源,也没多大问题.现在回到家里变成了2M的ADSL,很多软件更新不下来. 更改软件源,也就修改/etc/apt/source ...

  2. 原生AJAX如何异步提交数据?

    AJAX概述 AJAX:Asynchronous Javascript And XML,异步的JS和XML.2001,Google为了改进搜索的用户体验,提出了GoogleSugguest效果,正式提 ...

  3. java与.net比较学习系列(2) 基础语言要素

    这一篇从最基础的开始对比总结,说起基础语言要素,故名思义,就是学习语言的基础,主要内容包括标识符,关键字和注释.我想从以下几点进行总结,有区别的地方有都使用红色粗体字进行了总结. 1,标识符 2,关键 ...

  4. [转]Asp.Net调用前台js调用后台代码分享

    1.C#前台js调用后台代码 前台js <script type="text/javascript" language="javascript"> ...

  5. oracle索引学习

    查看执行状态: 选中代码直接按F5,或者点击Tools===>>Explain Plan 一.索引的注意事项: 当任何单个查询要检索的行少于或者等于整个表行数的10%时,索引就非常有用.这 ...

  6. 对Lucene PhraseQuery的slop的理解[转载]

    所谓PhraseQuery,就是通过短语来检索,比如我想查“big car”这个短语,那么如果待匹配的document的指定项里包含了"big car"这个短语,这个documen ...

  7. iOS指纹识别

    #import "ViewController.h" #import <LocalAuthentication/LocalAuthentication.h> @inte ...

  8. UIView的一些常用属性和方法

    UIView的一些常用属性和方法 1. UIView的属性 UIView继承自UIResponder,拥有touches方法. - (instancetype)initWithFrame:(CGRec ...

  9. JS+html实现简单的飞机大战

    摘要:通过原生的js+html实现简单的飞机大战小游戏效果,如图所示: 实现代码如下: 1.自己的飞机实现 飞机html: <!DOCTYPE html> <html lang=&q ...

  10. C++----练习

    1.完成一个C++实现的加法程序: #include<iostream> int main() { std::cout<<"可以输入两个加数,本程序完成加法...&q ...