一、步骤
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; // 设置为不在屏幕中
}
}
}
动画的前放盒倒放.gif