u3d_插件DoTween:(05)动画的前放和倒放

一、步骤
1.定义一个属性    public bool isIn = false; // 判断是否在屏幕当中(默认是false 不在屏幕当中) 判断是否在屏幕当中
2.按钮点击判断处理 isIn 的操作
3.DOLocalMove、DOMove这些方法会返回一个Tweener的对象,动画结束之后会把这个对象销毁
4.panelTransform.DOPlayBackwards();// 倒放
5.tweener.SetAutoKill(false); // 把autokill 自动销毁设置 为 不自动销毁
6.DOPlay(); // 动画只会执行1次
7.DOPlayForward(); 和DOPlayBackwards();// 是成对的

二、code
MyButton脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class MyButton : MonoBehaviour {

// 属性
    public RectTransform panelTransform; // image
    public bool isIn = false; // 判断是否在屏幕当中(默认是false 不在屏幕当中)

// 方法
    // 代码放到start里面 说明只会执行一次 , 
    void Start(){
        
        // 进入屏幕
        // DOMove 
        // 这个修改是世界坐标
        //      panelTransform.DOMove (new Vector3 (0, 0, 0), 1);// 让paneltransform从当前位置 动画到0,0,0 时间为1秒
        // 我们需要修改的是局部坐标
        Tweener tweener = panelTransform.DOLocalMove (new Vector3 (0, 0, 0), 0.3f);
        // DolcalMove 动画 默认播放完会销毁
        // tweener 对象保存这个动画的信息 每次调用do类型的方法都会创建一个tweener对象,这个对象是dotween来管理的
        tweener.SetAutoKill(false); // 把autokill 自动销毁设置 为 不自动销毁
        tweener.Pause(); // 暂停
    }

    public void onclick (){

        if (isIn == false) {
//          panelTransform.DOPlay ();//只会播放一次
            panelTransform.DOPlayForward(); // 前放 跟DOPlayBackwards是成对的

            // 如果把start 中tweener这些操作放到这个,那么每次执行1次都会保留一个tweener对象,消耗性能
            isIn = true; // 设置为在屏幕中
        } else {
            // 让panel离开屏幕
            panelTransform.DOPlayBackwards();// 倒放
            isIn = false; // 设置为不在屏幕中
        }

    }
}


u3d_插件DoTween:(05)动画的前放和倒放_第1张图片
动画的前放盒倒放.gif

你可能感兴趣的:(u3d_插件DoTween:(05)动画的前放和倒放)