Dotween 应用
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 应用的更多相关文章
- DoTween 应用设置
一.下载 官方下载地址:http://dotween.demigiant.com/download.php 二.安装 1.把下载到压缩包中的DOTween文件夹拷贝到项目文件中 2.安装DOTween ...
- DoTween 教程
官方网站:http://dotween.demigiant.com/ 下载地址:http://dotween.demigiant.com/download.php pro版下载地址:http://pa ...
- UGUI与DOtween的坑
在使用ugui和dotween做动画时,如使用transform.DoMoveX,.DoLocalMoveX,.DoMove,.DoLocalMove等方法时,动画效果有可能是错误的,什么时候错误呢? ...
- 时光煮雨 Unity3D让物体动起来③—UGUI DoTween&Unity Native2D实现
本文首发蛮牛,次发博客园.接系列 第一篇,第二篇,本文为第三篇,再次感谢“武装三藏”在前两篇无私且精彩的问题解答 写在最前,时光煮雨,为了怀念 以下引用曾今读过的一些教程文章 其实这3种动画都有它特定 ...
- DoTween小结
using UnityEngine; using System.Collections; using DG.Tweening; public class GetStart : MonoBehaviou ...
- DoTween NGUI bug
多次动画导致UISprite丢失 DOTween动画进行时与UISprite有冲突,DOTween多次重复同一个动画时,UISprite会莫名的丢失 UISprite动画代码 CUIManager.I ...
- DOTween文档
前言 DOTween现在还处于 alpha,所以还有一些缺失的功能(如路径插件,附加回调和其它的tween选项),这个文档在不久的将来可能会更新. DoTween:0.8.2.00 官方文档:http ...
- DoTween(HOTween V2) 教程
DoTween资料 官方网站:http://dotween.demigiant.com/ 下载地址:http://dotween.demigiant.com/download.php 快速开始:htt ...
- U3D 扩展方法 & Dotween & tolua
using UnityEngine; using System.Collections; using LuaInterface;//tolua 空间引用 using DG.Tweening;//DOT ...
- unity Dotween插件的简单介绍及示例代码
unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...
随机推荐
- 从零开始入门 K8s | 应用配置管理
一.需求来源 背景问题 首先一起来看一下需求来源.大家应该都有过这样的经验,就是用一个容器镜像来启动一个 container.要启动这个容器,其实有很多需要配套的问题待解决: 第一,比如说一些可变的配 ...
- 10.Django基础八之cookie和session
一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器 ...
- Linux 安装CentOS7操作系统
作者:小啊博 QQ:762641008 转载请声明:https://www.cnblogs.com/-bobo 1.安装操作系统 开启虚拟机后会出现以下界面 Install CentOS 7 安装Ce ...
- windows安装Mycat并测试
1.下载系统安装包 选择相应的版本进行下载,地址:http://dl.mycat.io/ .Mycat数据库分库分表中间件介绍 http://www.mycat.io/ 2.安装 安装mycat前需要 ...
- linux 修改文件权限指令chmod
chmod 修改一下bin目录下的.sh权限就可以了. chmod u+x *.sh 这里的u 这里指文件所有者,+x 添加可执行权限,*.sh表示所有的sh文件.
- 如何解决myeclipse2014突然无法打开的问题
今天突然发现我的myeclipse2014打开不了,昨晚还好好的,上网找了一下没有找到解决方法,于是新建一个工作区间Workspace Test,再打开File->Switch WorkSpac ...
- windows下查看进程及结束进程命令
windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- 集合查询表--Map
查询表 Map接口java提供了一组可以以键值对(key-value)的形式存储数据的数据结构,这种数据结构成为Map.我们可以把Map看成一个多行两列的表格,其中第一列存放key,第二列存放valu ...
- http post 请求,带参数,带请求头
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json url = 'http://............ ...
- COGS 2089. 平凡的测试数据
[题目描述] 树链剖分可以干什么? “可以支持在树中快速修改一个点信息,快速询问一条链信息” LCT可以干什么? “可以支持树链剖分支持的特性,并且支持快速链接两个棵树,或者断开某条边” 那我现在要出 ...