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插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...
随机推荐
- 基于RDD实现简单的WordCount程序
写在前面 因为觉得自己的代码量实在是太少了,所以,想着,每周至少写5个小的demo程序.现在的想法是,写一些Spark,Storm,MapReduce,Flume,kafka等等单独或组合使用的一些小 ...
- Spring MVC-从零开始-view-ViewResolver
主要ViewResolver简介 InternalResourceViewResolver 将逻辑视图名解析为一个路径 BeanNameViewResolver 将逻辑视图名解析为bean的name属 ...
- 探索ASP.NET Core 3.0系列一:新的项目文件、Program.cs和generic host
前言:在这篇文章中我们来看看ASP.Net Core 3.0应用程序中一些基本的部分—— .csproj项目文件和Program.cs文件.我将会介绍它们从 ASP.NET Core 2.x 中的默认 ...
- javaweb技术入门
JavaWeb巩固和进阶 1.如何配置外部应用? 方法一: server.xml 在<Host>中添加如下配置 <Context path="/xxx" docB ...
- Scanner类的next()方法和nextLine()方法的异同点
通过一段代码就可以明白其中的奥妙!! import java.util.Scanner; public class next_nextLine { public static void main(St ...
- MongoDB的全文索引
Table of Contents 背景 如何使用 准备工作:插入数据 建立全局索引 查询结果 使用中存在哪些问题? 英文存在停止词 中文无法采用全文索引 前面了解了多种索引方式,比如单键索引,多 ...
- Spark 学习笔记之 map/flatMap/filter/mapPartitions/mapPartitionsWithIndex/sample
map/flatMap/filter/mapPartitions/mapPartitionsWithIndex/sample:
- MySql权限丢失问题解决
参考文章 [mysql] root权限丢失恢复 完全菜鸟教程 今天用root账户登录到mysql后, show databases 命令返回的只有两个表, 然后使用 use database 命令提示 ...
- FreeRTOS优化与错误排查方法
写在前面 主要是为刚接触 FreeRTOS 的用户指出那些新手通常容易遇到的问题.这里把最主要的篇幅放在栈溢出以及栈溢出j检测上,因为栈相关的问题是初学者遇到最多的问题. printf-stdarg. ...
- 02-25 scikit-learn库之决策树
目录 scikit-learn库之决策树 一.DecisionTreeClassifier 1.1 使用场景 1.2 代码 1.3 参数详解 1.4 属性 1.5 方法 二.DecisionTreeR ...