2019.12.12補充:php
問題:當前dotween動畫沒播放完,便再次播放有衝突的操做,如連續屢次播放、正播、倒播,致使顯示不正常或報錯。css
解決方法:在每次開始執行播放動畫時,先加上下面對應相似的殺死進程代碼,就OK了html
transform.DOKill(); transform.RectTransform().DOKill();
讓DOTweenAnimation忽略Time.timeScale = 0的影響:函數
GetComponent<DOTweenAnimation>().tween.SetUpdate(true);
2019.06.25更新:oop
一、方法1測試
在實際測試,發現有時莫名失效。建議採用預製體形式。動畫
-
using DG.Tweening;
-
using DG.Tweening.Core;
-
-
DOTweenAnimation da= ob.gameObject.AddComponent<DOTweenAnimation>();
-
da.animationType = DOTweenAnimationType.LocalRotate;
-
da.easeType = Ease.Linear;
-
da.duration =
0.3f;
-
da.loops =
-1;
-
da.endValueV3 =
new Vector3(
0,
50,
0);
方法2spa
實現讓該物體不停旋轉。.net
-
icon.transform.DOLocalRotate(
new Vector3(
0,
0,
-360),
2, RotateMode.FastBeyond360)
-
.SetEase(Ease.Linear).SetLoops(
-1, LoopType.Restart).Play();
將某點在必定時間內移動到某點插件
-
using DG.Tweening;
-
-
Vector3 myvalue =
new Vector3(
0,
0,
0);
-
DOTween.To(() => myvalue, x => myvalue = x,
new Vector3(
10,
10,
10),
2);
-
要移動的初始值 目標值 時間
在1s內將目標物體從當前位置移動到目標位置
-
transform.DOMove(
new Vector3(
1,
1,
1),
1);
-
transform.DOLocalMove(
new Vector3(
1,
1,
1),
1);
從當前位置延X/Y/Z方向,移動到目標位置5
transform.DOMoveX(5, 1);
從目標位置,移動到當前位置
-
絕對位置,若當前座標(
1,
0,
0),即從
5運動到
1
-
transform.DOMoveX(
5,
1).From();
-
transform.DOMoveX(
5,
1).From(
false);
-
-
相對位置,若當前座標(
1,
0,
0),即從
6運動到
1(
6
-1=
5,相對位移
5)
-
transform.DOMoveX(
5,
1).From(
true);
動畫暫停、動畫播放、動畫向前播放、動畫倒放
-
//DOTween播放會生成動畫,動畫保存在Tweener信息中,默認動畫播放完會被銷燬,要想倒放,必須設爲不被銷燬
-
//tweener也會播放動畫
-
Tweener tweener= transform.DOLocalMove(
new Vector3(
1,
1,
1),
1);
-
tweener.SetAutoKill(
false);
-
//暫停動畫
-
tweener.Pause();
-
//播放動畫,只播放一次,再次調用不可播放
-
transform.DOPlay();
-
//向前播放動畫
-
transform.DOPlayForward();
-
//動畫倒放
-
transform.DOPlayBackwards();
-
//從新播放動畫:若用的可視化編輯,需取消AutoKill
-
transform.DORestart();
設置動畫曲線,即動畫運動方式(相似設置PPT動畫的出現效果)
-
Tweener tweener = transform.DOLocalMoveX(
0,
5);
-
tweener.SetEase(Ease.InBounce);
設置動畫播放次數,下爲播放兩次動畫
-
Tweener tweener = transform.DOLocalMoveX(
0,
5);
-
tweener.SetLoops(
2);
動畫播放完成事件函數、
-
Tweener tweener = transform.DOLocalMoveX(
0,
5);
-
//動畫播放完成調用事件函數
-
tweener.OnComplete(你的方法);
-
-
//動畫銷燬調用事件函數
-
tweener.OnKill(你的方法);
-
-
//動畫播放時調用事件函數(一直調用)
-
tweener.OnPlay(你的方法);
-
-
//動畫暫停時調用事件函數
-
tweener.OnPause(你的方法);
-
-
//動畫重置時調用事件函數
-
tweener.OnRewind(你的方法);
-
-
//動畫開始播放時調用事件函數
-
tweener.OnStart(你的方法);
-
-
//動畫播放時調用事件函數(一次)
-
tweener.OnPlay(你的方法);
若文本框內無文字,在3s內逐字顯示文字。
如有文字,則逐字覆蓋掉原先文字,顯示新文字
GetComponent<Text>().DOText("接下來咱們進入第二篇章", 3);
掛載在攝像機上面
-
//持續時間,其他默認
-
transform.DOShakePosition(
1);
-
//持續時間、強度(下爲只在X、Y方向上震動)
-
transform.DOShakePosition(
1,
new Vector3(
3,
3,
0));
在2s中將本來顏色變爲紅色
GetComponent<Text>().DOColor(Color.red, 2);
文字透明度會在3s內從0變爲1
GetComponent<Text>().DOFade(1, 3);
該組件在DOTween Pro插件裏面
可以使用代碼經過控制ID的方式來控制動畫的播放
下載地址:下載
-
using UnityEngine;
-
using DG.Tweening;
-
-
public
class
UIController :
MonoBehaviour {
-
-
DOTweenAnimation tweenAnimation;
-
-
void Start () {
-
tweenAnimation = GetComponent<DOTweenAnimation>();
-
}
-
-
public void OnClick()
-
{
-
tweenAnimation.DOPlayBackwards();
-
}
-
}
該組件在DOTween Pro插件裏面
下載地址:下載
Shift+Ctrl:添加路徑點
Shift+Alt:刪除路徑點
Duration:時長
Delay:延遲時間
Ease:運動模式
Loops:播放次數,-1爲循環播放,0爲播放一次
Path Type:Linner/Catmull Rom,Linner,線性;Catmull Rom給路徑作圓滑處理
Close Path:將起點與終點鏈接,圍成一個圈
Local Movement:局部座標下移動
Orientation:朝向。To Path,遊戲物體朝向路徑運動;Look At Transform;Look At Position
Relative:勾選後,選擇遊戲物體,路徑可總體移動
Show Indexes:是否顯示路徑索引
Handles Type:Free/Full,Full,每一個點顯示三座標
Reset Path:刪除全部點,重置路徑
代碼控制:
該組件自帶控制方法,直接調用便可,固然也可在Unity經過Button拖拽方式直接控制
-
using UnityEngine;
-
using DG.Tweening;
-
-
public
class
UIController :
MonoBehaviour {
-
-
DOTweenPath tweenAnimation;
-
-
void Start () {
-
tweenAnimation = GetComponent<DOTweenPath>();
-
}
-
-
public void OnClick()
-
{
-
//開始播放
-
tweenAnimation.DOPlay();
-
-
//運動開關:點擊一次,繼續開始播放,再點擊一次,在當前位置暫停
-
tweenAnimation.DOTogglePause();
-
-
//從新播放動畫
-
tweenAnimation.DORestart();
-
-
//殺死動畫,此後沒法再播放動畫
-
tweenAnimation.DOKill();
-
}
-
}