Unity3D 学习日记(八) DoTween学习笔记之Tweener(二)
2016-04-25 18:22
531 查看
如果你使用了DoTween的时候会发现DoTween动画会默认播放状态,但是我们有很多UI动画并没有一开始就不断播放的功能因此我们需要修改动画播放的状态以及其他属性的时候该怎么办呢?
你可能注意到了DoTween所创建的动画都是默认Play状态以及播放完毕后会自动销毁动画,避免动画占用或者消耗内存。但是很多UI动画都是可以不断重复播放的,如果不断创建和销毁动画这样会消耗很多内存以及资源的,在游戏中这种情况一定要避免,为此DoTween提供了一个类方便我们进行动画状态以及属性等进行管理和修改等,DoTween的动画状态以及属性都可以通过Tweener类进行统一的管理和修改,所以Tweener也可以所示DoTween的核心功能之一,是值得我们去研究和学习的一个函数。
这里我简单的介绍一下Tweener类比较常用的一些函数,以及Tweener的简单的用法。
详细情况我就直接通过注释,代码如下:
你可能注意到了DoTween所创建的动画都是默认Play状态以及播放完毕后会自动销毁动画,避免动画占用或者消耗内存。但是很多UI动画都是可以不断重复播放的,如果不断创建和销毁动画这样会消耗很多内存以及资源的,在游戏中这种情况一定要避免,为此DoTween提供了一个类方便我们进行动画状态以及属性等进行管理和修改等,DoTween的动画状态以及属性都可以通过Tweener类进行统一的管理和修改,所以Tweener也可以所示DoTween的核心功能之一,是值得我们去研究和学习的一个函数。
这里我简单的介绍一下Tweener类比较常用的一些函数,以及Tweener的简单的用法。
详细情况我就直接通过注释,代码如下:
using UnityEngine; using DG.Tweening; public class MyButton : MonoBehaviour { public RectTransform panelTranform; private bool isIn = false; public LoopType loopType; //循环的模式 void Start() { //panelTranform.DOMove(Vector3.zero, 1); //这个是修改UGUI的世界坐标 //创建一个简单位移动画,并将动画赋值给一个Tweener进行管理 Tweener paneltweener = panelTranform.DOLocalMove(Vector3.zero, 2f); //这个是修改UGUI的局部坐标,相对与父类的局部坐标 //多次调用DOTween动画会影响性能 //DOTween默认动画播放完毕时会自动销毁动画 //Tweener对象保存这个动画 paneltweener.SetAutoKill(false); //禁止销毁动画 paneltweener.Pause(); //停止播放动画 //paneltweener.SetDelay(0.5f); //设置动画延迟播放 //paneltweener.SetEase(Ease.INTERNAL_Zero); //设置动画运动的模式 //paneltweener.SetLoops(-1); //设置循环播放 (当参数为-1的时候循环播放;当参数>=0的时候则表示循环的次数;0的时候表示循环一次) //paneltweener.SetLoops(-1,loopType) //设置循环播放并且设置动画循环的模式 //paneltweener.PlayForward(); //播放 //paneltweener.PlayBackwards(); //倒放 //paneltweener.OnComplete(OnComplete); //动画播放完毕后执行,动画倒放时候不执行 //paneltweener.OnStart(OnStart); //动画第一次播放时执行 //paneltweener.OnUpdate(OnUpdate); //动画播放时不断执行 //paneltweener.OnPlay(OnPlay); //动画开始播放时执行 //paneltweener.OnStepComplete(OnStepComplete);//动画播放且倒放都会执行一次,且执行顺序先于OnComplete //paneltweener.OnKill(OnKill); //动画删除的时候执行事件 //paneltweener.Kill(true); //删除动画且组件会直接到达指定位置 } private void OnKill() { Debug.Log("This is OnKill"); } private void OnStepComplete() { Debug.Log("This is OnStepComplete"); } private void OnPlay() { Debug.Log("This is OnPlay"); } private void OnUpdate() { Debug.Log("This is OnUpdate"); } private void OnStart() { Debug.Log("动画第一次播放"); } public void OnClick() { if(!isIn) { //注释掉的方法是效果都是一样的 //panelTranform.DOPlay(); //动画只会播放一次 panelTranform.DOPlayForward(); //前进 //paneltweener.PlayForward(); //播放 isIn = true; } else { //paneltweener.PlayBackwards(); //倒放 panelTranform.DOPlayBackwards(); //倒放 isIn = false; } } void OnComplete() { Debug.Log("动画播放完毕!"); } }
相关文章推荐
- Unity 粒子海洋效果实现
- 【Unity灯光与渲染技术】在Unity3D中创建一个自定义的天空盒子setting up a custom skybox
- unity Bezier 多个转载
- Unity3D 学习日记(七) DoTween学习笔记之Move(一)
- Unity3d中获取游戏对象
- Unity3D 学习日记(六) 制作简单的小地图
- unity Package
- Unity5.0 烘焙物体导入其他场景
- Unity3D MVC结构
- Unity学习笔记六 - Survival Shooter Tutorial
- unity3d问题集 对Vector3.Lerp 插值的理解 - 转自蛮牛
- 关于unity5.x破解不了的问题(二)
- 使用SVN进行Unity3d版本管理总结
- Unity学习笔记五 - Survival Shooter Tutorial
- U3D添加按钮相应事件
- Unity Shaders and Effects Cookbook (4-6)震撼的实时反射 动态立方图系统
- 【Unity2D游戏实战 之 2D滚屏射击】1.背景滚动 (一)
- Unity UGUI 图片 轴对称效果 减少资源
- Unity常用脚本类的继承关系
- Unity基础知识结构总结