开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:729

当前位置:游戏蛮牛 技术专区 教程分享

查看: 189|回复: 5

[实例教程] 转一贴DOTween的基础使用方法

[复制链接]  [移动端链接]
7日久生情
2772/5000
排名
391
昨日变化
2

17

主题

268

帖子

2772

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
10276
好友
0
蛮牛币
4822
威望
0
注册时间
2013-12-14
在线时间
1087 小时
最后登录
2018-1-18
发表于 2018-1-7 19:56:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 kukushaoye 于 2018-1-7 19:58 编辑

[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;
using DG.Tweening;
using UnityEngine.UI;


public class TestDoTween : MonoBehaviour {

    int number = 0;
    // Use this for initialization
    void Start ()
    {
        //FunctionOne();
        //FunctionTwo();
        //FunctionSequence();
        FunctionSet();
    }

    // 创建 DOTween 实例 方法
    #region 方法一 类方法
    private void FunctionOne()
    {
        // 创建一个 Tweener 是自身坐标 一秒内 移动到  坐标 Vector3(5, 5, 5) 位置
        Tween tween = DOTween.To(() => transform.position, r => transform.position = r, new Vector3(5, 5, 5), 1);

        // 创建一个 Tweener 对象, 另 number的值在 5 秒内变化到 100
        Tween t = DOTween.To(() => number, x => number = x, 100, 5);
        // 给执行 t 变化时,每帧回调一次 UpdateTween 方法
        t.OnUpdate( () => UpdateTween(number));  
    }

    private void UpdateTween(int num)
    {
        Debug.Log(num);      // 变化过程中, 每帧回调该方法
    }

    #endregion

    #region 方法二  直接调用

    private void FunctionTwo()
    {
        //十秒内X,Y,Z 局部坐标(localPosition)移动到  10,10,10 位置
        //transform.DOBlendableLocalMoveBy(new Vector3(10, 10, 10), 10);

        //十秒内 X,Y,Z 方向的局部旋转(localPosition),转动到 30,30,30
        //transform.DOBlendableLocalRotateBy(new Vector3(30, 30, 30), 10);

        //十秒内X,Y,Z坐标移动到 自身坐标 加 new Vector3( 10,10,10) 位置 原始 坐标 3,3,3,移动后 13,13,13
        //transform.DOBlendableMoveBy(new Vector3(10, 10, 10), 10);

        //十秒内X,Y,Z自身旋转到 30,30,30(有父物体的相对于父物体)
        //transform.DOBlendableRotateBy(new Vector3(30, 30, 30), 10);

        //十秒内 自身X,Y,Z方向的比例 加 3,3,3如原始比例 2,1,1 变化后5,4,4
        //transform.DOBlendableScaleBy(new Vector3(10, 10, 10), 10);

        //执行该方法,变化立即结束,且完成移动
        //transform.DOComplete();

        //在变化过程中执行该方法,则物体慢慢的变回原样,如果变化已经完成,该方法无效
        //transform.DOFlip();

        // 变化过程中执行该方法,则物体变化到 第二秒 时该物体的位置、比例等
        //transform.DOGoto(2);

        //十秒内 弹跳 3次
        //transform.DOJump(new Vector3(10, 10, 10), 3, 10);

        //停止掉当前的变化
        //transform.DOKill();

        // 十秒内 弹跳 3次, 局部坐标最终变化为  10, 0, 10
        //transform.DOLocalJump(new Vector3(10, 10, 10), 3, 10);

        // 5 秒内, 局部坐标变化到  10,10,10
        //transform.DOLocalMove(new Vector3(10, 10, 10), 5);

        // 10 秒内 X 局部坐标变换到 5
        //transform.DOLocalMoveX(5, 10);

        // 10 秒内 Y 局部坐标变化到 5
        //transform.DOLocalMoveY(5, 10);

        //10 秒内 Z 局部坐标变化到 5
        //transform.DOLocalMoveZ(5, 10);

        //transform.DOLocalPath();

        //5 秒内 局部旋转变化到  10,10, 10
        //transform.DOLocalRotate(new Vector3(10, 10, 10), 5);

        // 自身朝向 坐标(10,10,10)
        //transform.DOLookAt(new Vector3(10, 10, 10), 5);

        // 5 秒内 移动到 坐标 (10,10,10)
        //transform.DOMove(new Vector3(10, 10, 10), 5);

        //10 秒内 X 局部坐标变化到 5
        //transform.DOMoveX(5, 10);

        //10 秒内 Y 局部坐标变化到 5
        //transform.DOMoveY(5, 10);

        //10 秒内 Z 局部坐标变化到 5
        //transform.DOMoveZ(5, 10);

        //
        //transform.DOPath();

        //执行该方法停止 变化
        //transform.DOPause();

        //transform.DOPlay();

        //变化结束前调用该方法,物体回到原始位置
        //transform.DOPlayBackwards();

        //执行 transform.DOPlayBackwards(); 物体回到原始位置
        //执行 下面方法则再次变化
        //transform.DOPlayForward();

        //冲压机,在 5 秒内在原始坐标和下面坐标之间,来回冲压
        //transform.DOPunchPosition(new Vector3(10, 10, 10), 5);

        //冲压机,在 5 秒内在原始旋转和下面角度之间,来回冲压变化
        //transform.DOPunchRotation(new Vector3(50, 50, 50), 5);

        //冲压机,在 5 秒内在原始比例和下面比例之间,来回冲压变化
        //transform.DOPunchScale(new Vector3(5, 5, 5), 5);

        //在变化结束之前,执行该方法,则重新开始变化
        //transform.DORestart();

        //变化过程中执行该方法,回到原始
        //transform.DORewind();

        // 10 秒内 旋转角度 到  (50,50,50)
        //transform.DORotate(new Vector3(50, 50, 50), 5);

        // 10 秒内 比例变化到  (5,5,5)
        //transform.DOScale(new Vector3(5, 5, 5), 5);

        // 10 秒内 X 比例变化到 5 
        //transform.DOScaleX(5, 10);

        // 10 秒内 Y 比例变化到 5 
        //transform.DOScaleY(5, 10);

        // 10 秒内 Z 比例变化到 5 
        //transform.DOScaleZ(5, 10);

        // 10 秒内 物体 X,Y,Z 坐标在   自身-5 到 自身加 5 之间震动
        //transform.DOShakePosition(10, new Vector3(10, 10, 10));

        // 10 秒内, 物体 X,Y,Z 旋转角度在 自身-5 到 自身加 5 之间震动
        //transform.DOShakeRotation(10, new Vector3(10, 10, 10));

        // 10 秒内, 物体 X,Y,Z 比例在 自身-5 到 自身加 5 之间震动
        //transform.DOShakeScale(10, new Vector3(10, 10, 10));

        //在变化过程中执行该方法,停止、开始、停止、开始
        //transform.DOTogglePause();

        // 执行该方法,坐标立即变化为 0,5,0, 从 0,5,0 两秒移动到初始位置
        //transform.DOMove(new Vector3(0, 5, 0), 2).From();

        // 执行该方法,移动到相对于原始位置 6,0,2 的位置
        // 如原始位置 3,2,1。 移动后位置为 3+6,2+0,2+2 即 9,2,4
        //transform.DOMove(new Vector3(6, 0, 2), 2).SetRelative();
    }

    #endregion


    #region DOTween回调方法  以 On 开头

    private void CallBack()
    {
        // 创建一个 Tweener 对象, 另 number的值在 5 秒内变化到 100
        Tween t = DOTween.To(() => number, x => number = x, 100, 5);

        // DOTween 可以连续调用 N 次方法如下
        // 执行变化的过程中可以回调的方法
        // 下面是不带参数的回调方法
        t.OnStart(OnStartTween).OnKill(OnKill).OnPause(OnPause).OnPlay(OnPlay).OnRewind(OnRewind);
        t.OnStepComplete(OnStepComplete).OnUpdate(UpdateTweenEd).OnComplete(OnComplete);


        // 带参数的回调方法如下
        t.OnUpdate(() => UpdateTweenED(number));
    }

    private void UpdateTweenED(int num)
    {
        Debug.Log("num   " + num);
    }

    private void OnComplete()
    {
        Debug.Log("OnComplete"); // 完成变化时回调
    }

    private void OnKill()
    {
        Debug.Log("OnKill");   // 执行结束后自动杀死,回调一次
    }

    private void OnPlay()
    {
        Debug.Log("OnPlay");   // 开始执行调用一次, 该方法在 OnStart 方法后调用
    }

    private void OnPause()
    {
        Debug.Log("OnPause");  // 暂停回调
    }

    private void OnRewind()
    {
        Debug.Log("OnRewind");   //倒回回调
    }

    private void OnStartTween()
    {
        Debug.Log("StartTween"); // 开始执行最先回调, 该方法在 OnPlay 方法前调用
    }

    private void OnStepComplete()
    {
        Debug.Log("OnStepComplete");  // 如果循环的,每循环完成调用一次。 不是循环的则完成执行
    }

    private void UpdateTweenEd()
    {
        Debug.Log(number);      // 变化过程中, 每帧回调该方法
    }

    private void 

回复

使用道具 举报

排名
19818
昨日变化
946

0

主题

19

帖子

67

积分

Rank: 2Rank: 2

UID
255678
好友
1
蛮牛币
63
威望
0
注册时间
2017-11-22
在线时间
30 小时
最后登录
2018-1-18
发表于 2018-1-8 09:46:11 | 显示全部楼层
感谢分享

回复

使用道具 举报

3偶尔光临
156/300
排名
10749
昨日变化
8

2

主题

43

帖子

156

积分

Rank: 3Rank: 3Rank: 3

UID
242916
好友
0
蛮牛币
132
威望
0
注册时间
2017-9-12
在线时间
39 小时
最后登录
2018-1-15
发表于 2018-1-8 16:23:18 | 显示全部楼层
111111111111111111111

回复 支持 反对

使用道具 举报

5熟悉之中
828/1000
排名
3810
昨日变化
22

1

主题

320

帖子

828

积分

Rank: 5Rank: 5

UID
122160
好友
0
蛮牛币
1442
威望
0
注册时间
2015-9-10
在线时间
193 小时
最后登录
2018-1-18
发表于 2018-1-9 09:28:26 | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
2066/5000
排名
4452
昨日变化
21

2

主题

1518

帖子

2066

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
8180
威望
0
注册时间
2017-9-6
在线时间
280 小时
最后登录
2018-1-18
发表于 2018-1-11 08:04:11 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

3偶尔光临
245/300
排名
13940
昨日变化
305

1

主题

94

帖子

245

积分

Rank: 3Rank: 3Rank: 3

UID
216830
好友
1
蛮牛币
248
威望
0
注册时间
2017-4-9
在线时间
108 小时
最后登录
2018-1-18
发表于 3 天前 | 显示全部楼层
谢谢分享

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表