一、步驟
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