dotween是做缓动比较简单实用的插件,下面就使用经验进行浅谈

1)通用方法:如下图官网截图所示,如果看不懂可以跳过,这是一个通用方法,前两个参数为委托类型,可以用lambda表达式,也可以直接写成委托

实例代码:

 DOTween.To(() => value, x => value=x, newValue, );

此方法用到的不是很多,如果用到只要记住value表示要变更的参数,newValue表示参数的目标值,3则为从当前值编导newValue的时间,其他的不用考虑

2)一般做法:

举例进行说明

 twTxt.DOColor(Color.red, 2f);

此代码表示将twTxt的文本的颜色在两秒内由当前颜色变为红色。

twGo.transform.DOMoveX(,2f)

此代码表示将游戏物体twGot的x值在两秒时间移动到300。

在此只是举两个例子,具体可以去看官网说明http://dotween.demigiant.com/documentation.php

3)可视化处理,即把dotween当成一个组建可视化处理

在要进行处理的游戏物体上添加组建doTweenAnimation如下图所示,可以通过参数选择要进行的动画,此组件也有onPlay/OnPauseToggle等方法供button调用

4)路径规划

路径规划单独来说一下,路径规划可以通过设定路径的一些点,让游戏物体按此路径来移动

代码如下:

twGo.transform.DOLocalPath(path, 5f, pathType);

让游戏物体twGo,在5秒时间按路径path移动,path为vector3类型的数组

可视化操作:

在要进行处理的游戏物体上添加组建doTweenPath如下图所示

可通过按住shift +ctrl同时在scenes视图中点击鼠标的方式添加路径点,也可以通过shift+alt来移除,也可以通过最下方的wayPoints来通过坐标进行添加

最后来一点经验:

当动画比较多时,肯定会遇到动画干扰等的问题(当两个动画同时处理一个游戏物体是,而且冲突),如果需要一个动画播完,另一个动画继续播放,可以用sequence,如下所示(来自官网)

                    Sequence mySequence = DOTween.Sequence();
// Add a movement tween at the beginning
mySequence.Append(transform.DOMoveX(, ));
// Add a rotation tween as soon as the previous one is finished
mySequence.Append(transform.DORotate(new Vector3(,,), ));
// Delay the whole Sequence by 1 second
mySequence.PrependInterval();
// Insert a scale tween for the whole duration of the Sequence
mySequence.Insert(, transform.DOScale(new Vector3(,,), mySequence.Duration()));

如果下一个动画播放的时间未定即有可能上一个动画未播完则继续下一个动画,此时第二个动画不会播放,则可以在第二个动画播放之前调用第一个动画的Complete方法,让第一动画提前完成

最后上一段测试代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; public class DotweenFunction : MonoBehaviour {
public GameObject twGo;
public Text twTxt;
public Vector2 value = Vector2.zero;
public PathType pathType; Tweener tw;
Vector2 newValue = new Vector2(, );
Vector3[] path;
// Use this for initialization
void Start () {
tw = twGo.transform.DOMoveX(,2f);//定义一个tweener
tw.SetAutoKill(false);//设定为非自动kill,否则播放完成就结束此tweener,后续无法继续使用此tweener
tw.Pause();//暂停
tw.SetLoops(-);//循环次数,-1为无限循环
path = new Vector3[] { new Vector3(, , ), new Vector3(, , ), new Vector3(, ,), new Vector3(-, ,),
new Vector3(-, -,),new Vector3(, -,),new Vector3(, ,)};//路径坐标
} public void OnDoPath()//路径移动
{
twGo.transform.DOLocalPath(path, 5f, pathType);
} public void OnTwColor()//text颜色
{
twTxt.DOColor(Color.red, 2f);
} public void OnTwText()//text文字改变
{
twTxt.DOText("这是一个新的测试", );
} public void OnPlayer(bool isOn)//正常播放与倒序播放
{
if(isOn)
{
tw.PlayForward();
}
else
{
tw.PlayBackwards();
}
} public void OnTest()//通用方法
{
DOTween.To(() => value, x => value=x, newValue, );
} // Update is called once per frame
void Update () { }
}

补间动画缓动形式:

http://robertpenner.com/easing/easing_demo.html

Dotween 应用的更多相关文章

  1. DoTween 应用设置

    一.下载 官方下载地址:http://dotween.demigiant.com/download.php 二.安装 1.把下载到压缩包中的DOTween文件夹拷贝到项目文件中 2.安装DOTween ...

  2. DoTween 教程

    官方网站:http://dotween.demigiant.com/ 下载地址:http://dotween.demigiant.com/download.php pro版下载地址:http://pa ...

  3. UGUI与DOtween的坑

    在使用ugui和dotween做动画时,如使用transform.DoMoveX,.DoLocalMoveX,.DoMove,.DoLocalMove等方法时,动画效果有可能是错误的,什么时候错误呢? ...

  4. 时光煮雨 Unity3D让物体动起来③—UGUI DoTween&Unity Native2D实现

    本文首发蛮牛,次发博客园.接系列 第一篇,第二篇,本文为第三篇,再次感谢“武装三藏”在前两篇无私且精彩的问题解答 写在最前,时光煮雨,为了怀念 以下引用曾今读过的一些教程文章 其实这3种动画都有它特定 ...

  5. DoTween小结

    using UnityEngine; using System.Collections; using DG.Tweening; public class GetStart : MonoBehaviou ...

  6. DoTween NGUI bug

    多次动画导致UISprite丢失 DOTween动画进行时与UISprite有冲突,DOTween多次重复同一个动画时,UISprite会莫名的丢失 UISprite动画代码 CUIManager.I ...

  7. DOTween文档

    前言 DOTween现在还处于 alpha,所以还有一些缺失的功能(如路径插件,附加回调和其它的tween选项),这个文档在不久的将来可能会更新. DoTween:0.8.2.00 官方文档:http ...

  8. DoTween(HOTween V2) 教程

    DoTween资料 官方网站:http://dotween.demigiant.com/ 下载地址:http://dotween.demigiant.com/download.php 快速开始:htt ...

  9. U3D 扩展方法 & Dotween & tolua

    using UnityEngine; using System.Collections; using LuaInterface;//tolua 空间引用 using DG.Tweening;//DOT ...

  10. unity Dotween插件的简单介绍及示例代码

    unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...

随机推荐

  1. intellij idea 2018 激活

    http://idea.toocruel.net http://active.chinapyg.com/ 2018-8-6可用 http://xdouble.cn:8888/ 2018年7月11号 测 ...

  2. Python 编译器与解释器

    Python 编译器与解释器 Python的环境我们已经搭建好了,可以开始学习基础知识了.但是,在此之前,还要先说说编译器与解释器相关的内容. 如果这部分内容,让你觉得难以理解或不能完全明白,可以暂时 ...

  3. 通过父级id获取到其下所有子级(无穷级)——Mysql函数实现

    [需求]某用户只能查看其自己信息及其下级信息,涉及通过该用户所在部门获取其下所有部门(多层)id集合. 步骤一:对数据库进行设置: set global log_bin_trust_function_ ...

  4. 限制页面被pc端访问

    在需要被pc端访问的页面的脚本里加上如下代码即可: <script>var system = {}; var p = navigator.platform; var u = navigat ...

  5. Mybatis的xml文件对大于号小于号的特殊处理!

    当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...

  6. uC/OS-III 任务详解(四)

    uC/OS系统的任务一般都放在最开始介绍,我放在第四章主要是对模糊的概念作清晰的讲解. 从用户的角度来看,uC/OS-III 中的任务可以分为5 种状态,分别是休眠态.就绪态.运行态.挂起态和中断态, ...

  7. SpringBoot返回JSON

    目录 1.SpringBoot返回JSON简介 2.整合jackson-databind 3.整合Gson 4.整合fastjson 1.SpringBoot返回JSON简介 随着web开发前后端分离 ...

  8. Python开发专属壁纸下载与轮换程序

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸.因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家. 原文链接:https://www.codernice.top ...

  9. liunx下安装MySQL

    1.安装依赖包:yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bisonyum install -y perl-Module-Insta ...

  10. 05-03 主成分分析(PCA)

    目录 主成分分析(PCA) 一.维数灾难和降维 二.主成分分析学习目标 三.主成分分析详解 3.1 主成分分析两个条件 3.2 基于最近重构性推导PCA 3.2.1 主成分分析目标函数 3.2.2 主 ...