unity --- DoTween插件安装与使用

news2024/9/25 23:24:14

目录

一.简介

 1.1 插件下载

1.2 官方文档

二.导入和设置

三.示例代码

1 循环动画:SetLoops(-1 , loopType )

2. 动画循环次数:SetLoops( count )

3. 动画事件监听与回调:OnStart \ OnComplete

4. 动画延迟回调:SetDelay

5. 动画自定义更新回调:OnUpdate

6. 动画路径回调:OnWayPointChange

7. 动画循环回调:

9. 动画延迟:SetDelay

10. 动画暂停和恢复:pause\play

11. 自定义动画曲线:SetEase( curve )

12. 动画过渡效果:SetEase

13. 动画速度调节:SetSpeed

14. 动画路径:DoPath

15. 动画贝塞尔曲线路径:DoPath

16. 动画颜色变化:DoColor

17. 动画渐变效果:DoColor

18. 动画旋转:DoRate

19. 动画相机视角变化:DoRatate

20. 动画缩放:DoScale

21. 动画摄像机视野变化:DOFieldIfView

22. 动画音量变化:DOFade

23. 动画淡入淡出效果:DoFade

24. 动画透明度变化:DoFade

25. 动画材质属性变化:DoFloat

26. 动画 UI 元素变化:DoSizeDelta

27. 动画相机抖动效果:DoShakePosition

28. 动画物体震动效果:DoShakePosition

29. 动画序列嵌套:

31. 动画字体大小变化:DoFontSize

33. 动画相机视角缩放:DOOrthoSize


一.简介

Dotween 是 Unity 的一个插件,用于简化动画制作和处理过渡效果。它提供了一系列强大的功能,可以轻松创建复杂的动画效果。

 1.1 插件下载

unity store中搜索 dotween 

点击这里

1.2 官方文档

文档

二.导入和设置

如上,在unity store 中将找到的dotween资源添加到我的资源中,然后在 unity中依次选择

Window --> Package Manager

在打开的窗口中选择My Assets,然后在搜索框中搜索 dotween.

如图:

 DOTween首次使用需要设置,导入以后会弹出窗口,点击open按钮就好。

或依次选择 Tools-->Demigiant-->DoTween Utility Panel

然后弹出下图:

 之后点击绿色的“Setup DOTween”按钮就能设置。下面的那个青色的按钮是生成一个ASMDEF文件,让写脚本的时候不必每次都去编码DOTween的内容,提高写完代码切换的速度。

点击了按钮就显示下面这个界面,默认全选就好,再选中Apply按钮就可以了。

三.示例代码

1 循环动画:SetLoops(-1 , loopType )

transform.DOScale(targetScale, duration).SetLoops(-1, LoopType.Yoyo);

该代码创建了一个循环动画,使物体平滑地缩放到目标大小 `targetScale`,然后再返回原始大小,以此往复进行。

transform.DOMove(targetPosition, duration).SetLoops(-1, LoopType.PingPong);

该代码创建了一个移动动画,使物体从当前位置平滑地移动到目标位置 `targetPosition`,然后返回原始位置,以此往复进行。

2. 动画循环次数:SetLoops( count )

transform.DOMove(targetPosition, duration).SetLoops(loopCount);

该代码创建了一个移动动画,使物体平滑地移动到目标位置 `targetPosition`,并循环播放 `loopCount` 次。

3. 动画事件监听与回调:OnStart \ OnComplete

tween.OnStart(() =>
{
    Debug.Log("动画开始");
});

tween.OnComplete(() =>
{
    Debug.Log("动画完成");
});

该代码添加了动画开始和动画完成的事件监听器。当动画开始时,将调用第一个回调函数并输出"动画开始";当动画完成时,将调用第二个回调函数并输出"动画完成"。

4. 动画延迟回调:SetDelay

transform.DOMove(targetPosition, duration)
.SetDelay(delay)
.OnComplete(() =>
{
    Debug.Log("延迟回调动画完成");
});

这段代码使用DOTween插件实现了动画的延迟回调效果。`transform.DOMove`表示物体移动的动画,`targetPosition`是目标位置,`duration`是动画的持续时间。`SetDelay`方法用于设置延迟开始动画的时间,`OnComplete`方法在动画完成时执行回调函数,这里会输出"延迟回调动画完成"。

5. 动画自定义更新回调:OnUpdate

transform.DOMove(targetPosition, duration).OnUpdate(() =>
{
    Debug.Log("动画更新中...");
});

这段代码使用DOTween插件实现了动画的自定义更新回调效果。`transform.DOMove`表示物体移动的动画,`targetPosition`是目标位置,`duration`是动画的持续时间。`OnUpdate`方法在动画更新时执行回调函数,这里会输出"动画更新中..."。

6. 动画路径回调:OnWayPointChange

transform.DOPath(path, duration, PathType.CatmullRom).OnWaypointChange(index =>
{
    Debug.Log("到达路径点:" + index);
});

这段代码使用DOTween插件实现了动画的路径回调效果。`transform.DOPath`表示物体按路径移动的动画,`path`是一个路径点的数组或列表,`duration`是动画的持续时间,`PathType.CatmullRom`表示路径的类型为Catmull-Rom曲线。`OnWaypointChange`方法在到达路径点时执行回调函数,这里会输出"到达路径点:"加上路径点的索引。

7. 动画循环回调:

transform.DOMove(targetPosition, duration)
.SetLoops(-1, LoopType.Restart)
.OnStepComplete(() =>
{
    Debug.Log("循环结束");
});

8 逐帧动画:SetOptions

transform.DOLocalPath(path, duration, PathType.CatmullRom).SetOptions(true);

该代码创建了一个逐帧动画,物体将按照给定的路径数组 `path` 逐帧平滑移动。使用 Catmull-Rom 插值算法计算路径上的连续点。

9. 动画延迟:SetDelay

transform.DOMove(targetPosition, duration).SetDelay(delay);

该代码创建了一个延迟动画,使物体在延迟了 `delay` 秒之后开始平滑地移动到目标位置 `targetPosition`,动画持续时间为 `duration` 秒。

10. 动画暂停和恢复:pause\play

tween.Pause();

tween.Play();

该代码演示了如何暂停和恢复动画。通过调用 `Pause()` 方法可以暂停动画的播放,调用 `Play()` 方法可以恢复动画的播放。

11. 自定义动画曲线:SetEase( curve )

transform.DOMove(targetPosition, duration).SetEase(curve);

该代码创建了一个移动动画,使物体按照自定义的动画曲线 `curve` 平滑移动到目标位置 `targetPosition`。

12. 动画过渡效果:SetEase

transform.DOMove(targetPosition, duration).SetEase(Ease.InOutQuad);

该代码创建了一个移动动画,使物体从当前位置平滑地移动到目标位置 `targetPosition`,并使用 InOutQuad 过渡效果,即快速开始和缓慢结束。

13. 动画速度调节:SetSpeed

transform.DOMove(targetPosition, duration).SetSpeedBased().SetSpeed(speed);

该代码创建了一个移动动画,物体从当前位置平滑地移动到目标位置 `targetPosition`,并根据动画的长度自动调整播放速度,并将播放速度设置为 `speed` 倍。

14. 动画路径:DoPath

transform.DOPath(path, duration, PathType.CatmullRom);

该代码创建了一个移动动画,使物体按照给定的路径数组 `path` 平滑移动,使用 Catmull-Rom 插值算法计算路径上的连续点。

15. 动画贝塞尔曲线路径:DoPath

transform.DOPath(path, duration, PathType.CubicBezier);

这段代码使用DOTween插件实现了物体的贝塞尔曲线路径动画。`transform`表示一个物体的Transform组件,`DOPath`方法用于在指定的时间内使物体按贝塞尔曲线路径移动,`path`是一个路径点的数组或列表,`duration`是动画的持续时间,`PathType.CubicBezier`表示路径的类型为三次贝塞尔曲线。

16. 动画颜色变化:DoColor

spriteRenderer.DOColor(targetColor, duration);

该代码创建了一个颜色变化动画,使 SpriteRenderer 对象的颜色平滑过渡到目标颜色 `targetColor`,动画持续时间为 `duration` 秒。

17. 动画渐变效果:DoColor

graphic.DOColor(targetColor, duration);

这段代码使用DOTween插件实现了渐变效果。`graphic`可以是任何继承自Graphic的UI元素,`DOColor`方法用于在指定的时间内将UI元素的颜色渐变到目标颜色`targetColor`。

18. 动画旋转:DoRate

transform.DORotate(targetRotation, duration);

该代码创建了一个旋转动画,使物体平滑地旋转到目标角度 `targetRotation`,动画持续时间为 `duration` 秒。

19. 动画相机视角变化:DoRatate

mainCamera.DORotate(new Vector3(targetAngle, 0f, 0f), duration);

这段代码使用DOTween插件实现了相机视角的变化效果。`mainCamera`是一个相机对象,`DORotate`方法用于在指定的时间内将相机的旋转角度渐变到目标角度,这里只改变了X轴方向的旋转角度,`targetAngle`是目标角度,`duration`是动画的持续时间。

20. 动画缩放:DoScale

transform.DOScale(targetScale, duration);

该代码创建了一个缩放动画,使物体平滑地缩放到目标大小 `targetScale`,动画持续时间为 `duration` 秒。

21. 动画摄像机视野变化:DOFieldIfView

mainCamera.DOFieldOfView(targetFieldOfView, duration);

该代码创建了一个摄像机视野变化动画,使主摄像机的视野平滑过渡到目标视野 `targetFieldOfView`,动画持续时间为 `duration` 秒。

22. 动画音量变化:DOFade

audioSource.DOFade(targetVolume, duration);

这段代码实现了音频渐变效果。`audioSource`是一个音频源对象,`DOFade`方法用于在指定的时间内将音频的音量渐变到目标音量`targetVolume`。

23. 动画淡入淡出效果:DoFade

canvasGroup.DOFade(targetAlpha, duration);

这段代码实现了CanvasGroup的淡入淡出效果。`canvasGroup`是一个CanvasGroup组件,`DOFade`方法用于在指定的时间内将CanvasGroup的透明度渐变到目标透明度`targetAlpha`。

24. 动画透明度变化:DoFade

spriteRenderer.DOFade(targetAlpha, duration);

这段代码使用DOTween插件实现了透明度的渐变效果。`spriteRenderer`是一个SpriteRenderer组件,`DOFade`方法用于在指定的时间内将对象的透明度渐变到目标透明度`targetAlpha`。

25. 动画材质属性变化:DoFloat

renderer.material.DOFloat(targetValue, "_PropertyName", duration);

这段代码使用DOTween插件实现了材质属性的渐变效果。`renderer`是一个渲染器组件,`material`属性获取了该渲染器的材质。`DOFloat`方法用于在指定的时间内将材质的属性`"_PropertyName"`渐变到目标值`targetValue`。

26. 动画 UI 元素变化:DoSizeDelta

rectTransform.DOSizeDelta(targetSizeDelta, duration);

这段代码使用DOTween插件实现了UI元素的大小变化效果。`rectTransform`是一个RectTransform组件,`DOSizeDelta`方法用于在指定的时间内将UI元素的尺寸变化到目标尺寸`targetSizeDelta`。

27. 动画相机抖动效果:DoShakePosition

mainCamera.DOShakePosition(duration, strength, vibrato, randomness);

这段代码使用DOTween插件实现了相机的抖动效果。`mainCamera`是一个相机对象,`DOShakePosition`方法用于在指定的时间内使相机产生抖动效果,其中`duration`表示抖动的持续时间,`strength`表示抖动的强度,`vibrato`表示抖动的频率,`randomness`表示抖动的随机性。

28. 动画物体震动效果:DoShakePosition

transform.DOShakePosition(duration, strength);

这段代码使用DOTween插件实现了物体的震动效果。`transform`表示一个物体的Transform组件,`DOShakePosition`方法用于在指定的时间内使物体产生震动效果,其中`duration`表示震动的持续时间,`strength`表示震动的强度。

29. 动画序列嵌套:

Sequence sequence = DOTween.Sequence();

sequence.Append(transform.DOMove(targetPosition / 2f, duration));

sequence.Append(transform.DOMove(targetPosition, duration));

sequence.Append(transform.DOMove(Vector3.zero, duration));

sequence.SetLoops(-1);

这段代码使用DOTween插件实现了动画序列嵌套效果。`DOTween.Sequence()`创建了一个动画序列对象`sequence`,`Append`方法用于按顺序添加动画,`transform.DOMove`表示物体移动的动画,`targetPosition`是目标位置,`duration`是动画的持续时间,`SetLoops(-1)`表示无限循环播放动画序列。

31. 动画字体大小变化:DoFontSize

text.DOFontSize(targetFontSize, duration);

这段代码使用DOTween插件实现了字体大小的变化效果。`text`是一个Text组件,`DOFontSize`方法用于在指定的时间内将文本的字体大小渐变到目标字体大小`targetFontSize`。

33. 动画相机视角缩放:DOOrthoSize

mainCamera.DOOrthoSize(targetSize, duration);

这段代码使用DOTween插件实现了相机视角的缩放效果。`mainCamera`是一个相机对象,`DOOrthoSize`方法用于在指定的时间内将相机的正交视角大小渐变到目标大小`targetSize`。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java8特性:函数式接口与Stream流

1、 函数式接口 &#xff08;1&#xff09;四大函数式接口 &#xff08;2&#xff09;代码01 //void accept(T t);消费型接口&#xff0c;有参数&#xff0c;无返回 Consumer<String> consumer t->{System.out.println(t); }; consumer.accept("a"); //…

DAY42:动态规划(二)斐波那契数列+爬楼梯+最小花费爬楼梯

文章目录 509.斐波那契数列思路&#xff1a;动规五步确定dp数组和数组下标含义递推公式DP数组初始化遍历顺序打印DP数组 完整版debug测试 空间复杂度优化版优化思路 70.爬楼梯思路DP数组的含义以及下标含义递推公式DP数组初始化遍历顺序打印DP数组 完整版debug测试 空间复杂度优…

10.24UEC++、事件

1. 类内部声明事件类型&#xff1a; 生成actor 绑定到事件上 实现&#xff1a; 移除&#xff1a;

使用docker安装redis并使用redis deskTop manager连接

使用docker安装redis 提前准备环境 linux、 docker环境 # 使用命令查看docker环境是否正常docker images(任何一个docker命令就可以&#xff0c;不一定必须这个) 下载redis镜像 # 使用命令下载镜像文件docker pull redis 确认镜像 # 使用命令查看镜像docker images使用redis d…

功能测试的测试流程是什么样的?

概述 本流程是描述软件功能自动化测试过程中的步骤、内容与方法&#xff0c;明确各阶段的职责、活动与产出物。 流程活动图 活动说明 测试计划&#xff08;可选&#xff09; 与以前的测试计划过程一致&#xff0c;只是在原来的测试计划中&#xff0c;添加对项目实施自动化测试…

Qt窗体全屏与复原,子窗体全屏与复原

QT QWidget窗体全屏时&#xff0c;全屏与最大化的区别时最大化有标题框全屏没有框&#xff0c;可以使用自带的函数&#xff1a; showFullScreen(); 复原时也有专门的函数&#xff1a; showNormal(); 如果我想在点击最大化按钮时&#xff0c;让窗体全屏。这个时候最好有线程…

学好工作汇报,你离升职加薪也就不远了

在职场中&#xff0c;工作汇报是展示你的价值和成果的重要环节。无论你是想要升职还是加薪&#xff0c;一个出色的工作汇报能够给你带来巨大的竞争优势。然而&#xff0c;许多人对于如何进行有效的工作汇报感到困惑。在本文中&#xff0c;我们将向您介绍一些关键技巧和策略&…

路径规划算法:基于骑手优化优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于骑手优化优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于骑手优化优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

Linux学习之vim在光标所在处写入内容,保存退出

vim insertTest使用vim打开一个叫做insertTest新文件。 输入命令之后&#xff0c;按下Enter&#xff08;回车键&#xff09;&#xff0c;就可以进入下边的操作页面。 按i在当前光标位置处&#xff0c;就可以插入内容了。 接下来写入内容跟记事本里边是差不多的。 按一下…

【Spring】Spring基础知识 Java开发必看

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前专攻C/C、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL、蓝桥杯&am…

vue拼接html中onclick的触发方式,模版字符串拼接点击事件在vue项目中不生效问题

模版字符串拼接点击事件在vue项目中不生效问题 下面的点击事件没有任何效果&#xff0c;但是如果换成onclick绑定事件则会提示没有该方法。主要原因是&#xff1a; 模版字符串中拼接的html片段中的方法调不到vue中this.methods里的东西&#xff0c;因为methods里的代码是编译…

物体识别(香蕉)

✨✨✨ 感谢优秀的你打开了小白的文章 “希望在看文章的你今天又进步了一点点&#xff0c;生活更加美好&#xff01;”&#x1f308;&#x1f308;&#x1f308; 目录 1.数据集下载 2.数据集导入 3.结果 1.数据集下载 包含所有图像和CSV标签文件的香蕉检测数据集可以直接从互…

day1-二分查找

二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解…

单片机基于stm32单片机的数字温度计设计_kaic

摘 要 古往今来,陶瓷在我们的生活中一直都是不可或缺的物品,而随着当今社会经济的快速发展,人们对于这些高档陶瓷产品的使用性能和产品质量上的要求也愈加严格。那么在陶瓷品的生产过程中,想要提高陶瓷品的品质和合格率,能够随时监测温度的温度计是必不可少的。 本课题的研究是…

什么是IP地址定位技术

IP地址定位是一种技术手段&#xff0c;可以通过获取设备的IP地址精确定位设备的地理位置。它在现代社会的许多方面都有广泛的应用&#xff0c;包括网络安全、广告投放市场调研等。 在互联网时代&#xff0c;人们越来越依赖于网络而IP地址作为网络连接的基石扮演着重要的角色。…

什么软件支持快速批量处理大量视频素材呢

在视频剪辑的过程中&#xff0c;有时候为了满足视频时长的需求&#xff0c;或者为了实现视频与音频的同步操作&#xff0c;我们可能需要对视频的播放速度进行调整。如果需要处理大量的视频文件&#xff0c;传统的手动一个个调整的方法就显得有点落后了&#xff0c;今天小编要与…

JDBC事务特性

1、 事务的四种特性&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a;原子性是指事务是一个不可分割的执行单元或者叫工作单位&#xff0c;事务中的操作&#xff0c;要么都发生&#xff0c;要么都不发生。 一致性&#xff08;Consistency&am…

centos7.9 安装redis5.0.7记录

参考自己之前写的安装5.0.3 centos7安装redis5.0.3详细步骤_lanren312的博客-CSDN博客 一开始大意了&#xff0c;没有安装gcc&#xff0c;直接就make [rootlocalhost redis-5.0.7]# make cd src && make all make[1]: Entering directory /opt/redis-5.0.7/srcLINK re…

Docker 多架构镜像介绍和最佳实践

Docker 多架构镜像介绍和最佳实践> 更多云原生相关技术分享请关注公众号&#xff1a;CloudNativeOps &#xff1b; 添加微信 GoOps888&#xff0c;备注 ‘加群’ 可加入云原生技术交流群。 一、多架构镜像介绍 在 Docker 中&#xff0c;同一个 Docker 镜像可以在不同的平台…

rosserial协议通信--向ros写调用过程和读取数据调用过程

rosserial通信向ros写调用过程如下&#xff1a; 在32单片机中&#xff0c;发布者调用publish函数&#xff0c;然后依次逆向&#xff08;上图是分析过程&#xff1b;调用过程逆向&#xff09;查看上图&#xff0c; 最终操作串口&#xff0c;向上位机发布数据进行通信。 rosser…