Dotween動(dòng)態(tài)效果插件
https://blog.csdn.net/zcaixzy5211314/article/details/84988535
廣泛用于UI效果,點(diǎn)擊效果 相當(dāng)于擴(kuò)展插件的庫(kù)
(DotweenPro收費(fèi)版 免費(fèi)版free)
獲取插件放到項(xiàng)目的新建文件夾Plugins中
或者在Asset Store商店中導(dǎo)入import(新版本中)
?
?
就可以了
點(diǎn)擊Documentation 官網(wǎng)上了解
http://dotween.demigiant.com/documentation.php
有點(diǎn)暈暈的基公,查看該方法詳解
https://www.cnblogs.com/Damon-3707/p/11367585.html
02-物體移動(dòng)和旋轉(zhuǎn)的方法
引用命名空間
using DG.Tweening;
//單軸移動(dòng) 目標(biāo)位置二蓝,移動(dòng)時(shí)間
transform.DOMove(Vector3.one,2);
//世界坐標(biāo)
transform.DOLocalMoveX(1, 2);
//局部坐標(biāo)
transform.DOLocalMove(Vector3.one, 2);
//旋轉(zhuǎn) 只有整體改變的沒(méi)有單坐標(biāo)的
transform.DORotate(Vector3.zero,2);
//局部旋轉(zhuǎn)
transform.DOLocalRotate(Vector3.zero, 2);
rotate旋轉(zhuǎn)
//旋轉(zhuǎn) 只有整體改變的沒(méi)有單坐標(biāo)的
transform.DORotate(Vector3.zero,2);
//局部旋轉(zhuǎn)
transform.DOLocalRotate(Vector3.zero, 2);
//資源樹(shù) 旋轉(zhuǎn)到提供的位置 使用較少,難度高
transform.DORotateQuaternion(new Quaternion(0.1f,0.1f,0.1f,0.1f),2);
// 慢慢看向這個(gè)位置
transform.DOLookAt(Vector3.one,2);
//scale縮放部分
//man --kuai -man 平滑曲線
//transform.DOScale(Vector3.one*2,2);
/*彈彈彈 第一個(gè)參數(shù) punch 運(yùn)動(dòng)的方向 力的大小
第二個(gè)參數(shù) duration持續(xù)時(shí)間
第三個(gè)參數(shù) 震動(dòng)次數(shù)(頻率)
第四個(gè)參數(shù)0-1
當(dāng)它為0的時(shí)候 從起始點(diǎn)
*/
// transform.DOPunchPosition(new Vector3(0,1,0),2,2,0.1f);
//參數(shù)是一樣的殊轴,運(yùn)用到不同的地方
//transform.DOPunchRotation(new Vector3(0, 1, 0), 2, 2, 0.1f);
//transform.DOPunchScale(new Vector3(0, 1, 0), 2, 2, 0.1f);
Shake函數(shù)的使用
/***
*
* Shake函數(shù)
* 震動(dòng)函數(shù)
* duration持續(xù)時(shí)間
* strength力量強(qiáng)度(振幅)
* vibrato次數(shù) 默認(rèn) 10
* tandomness隨機(jī)角度 默認(rèn)90
*
* **是否淡入彈出
*
* 特別適用于相機(jī)
* transform.DOShakePosition(2,Vector3.one,10,90);
*/
Tip
/**
* 老版本都會(huì)執(zhí)行精算,產(chǎn)生效果
* 新版本只會(huì)執(zhí)行最新的一行
* transform.DOMove(Vector3.one,2);
transform.DOMove(Vector3.one*2, 2);
*/
關(guān)于移動(dòng)的曲線參考文章ease
https://blog.csdn.net/zcc858079762/article/details/81279828
Blend函數(shù)的使用
//blend 將正常的兩個(gè)坐標(biāo)合在一起 動(dòng)畫(huà)混合 先進(jìn)行計(jì)算,后顯示
//transform.DOBlendableMoveBy(Vector3.one , 2);
// transform.DOBlendableMoveBy(-Vector3.one , 2);
//只有一個(gè)punch方法
transform.DOBlendablePunchRotation(-Vector3.one * 2, 2);
/** 材質(zhì)material改變顏色動(dòng)畫(huà) */
//獲取子的材質(zhì)球
Material material = GetComponent<MeshRenderer>().material;
//設(shè)置顏色
material.DOColor(Color.red,2);
//通過(guò)shaders改變顏色--適用于沒(méi)有maincolor的材質(zhì)
// material.DOColor(Color.red,"_Color", 2);
//material.SetColor("_Color",Color.red);
//透明 顏色的值,是一個(gè)四維向量芝雪,最后一位 阿爾法 是0
//material.DOColor(Color.clear,1);
//淡入透明所需要的時(shí)間
Tip:中間最好指定名字
默認(rèn)設(shè)置_Color的值
(為空?qǐng)?bào)錯(cuò))
//需要把
unity
中shader材質(zhì)修改particles/Standard Unlit
//Blending Options Rendering Mode改成Fade
結(jié)合代碼一起使用
小測(cè)試
// Material material = GetComponent<MeshRenderer>().material;
//Material[] material;
////material = GameObject.Find("Quad").GetComponent<MeshRenderer>().material;
//GameObject[] gos = GameObject.FindGameObjectsWithTag("Player");
//material = new Material[gos.Length];
//for (int i = 0; i < gos.Length; i++)
//{
// material[i] = gos[i].GetComponent<MeshRenderer>().material;
// material[i].DOFade(0, "_Color", 10-i*2);
//}
GameObject cube1 = GameObject.Find("Cube (1)");
cube1.transform.DOMove(new Vector3(1,1,1),5).SetEase(Ease.Linear);
材質(zhì)顏色漸變動(dòng)畫(huà)
顏色漸變Gradient
首先定義一個(gè)_gradient 在unity中該腳本產(chǎn)生出顏色漸變器工具
Alpha值代表透明度0-255
上面的代表透明度
下面的代表顏色
//讓unity上面指定的顏色顯示
`material.DOGradientColor(_gradient,2);`
Tip:
圖片.png
看到并非是在物體中綁定的腳本
創(chuàng)建一個(gè)腳本解決多個(gè)物體問(wèn)題
在腳本中:1.Material material;
聲明
material = GameObject.Find("Quad").GetComponent<MeshRenderer>().material;
查找組件的子材質(zhì)
即可
》2. //Material material = GetComponent<MeshRenderer>().material;//掛在物體上的腳本 獲得組件的子才子
-
//獲取多個(gè)子的材質(zhì)球 讓他逐漸透明
`Material[] material; GameObject[] gos = GameObject.FindGameObjectsWithTag("Player"); material = new Material[gos.Length]; for (int i = 0; i < gos.Length; i++) { material[i] = gos[i].GetComponent<MeshRenderer>().material; material[i].DOFade(0, "_Color", 10-i*2); }
`
> /*
* GameObject cube1 = GameObject.Find("Cube (1)");
cube1.transform.DOMove(new Vector3(1,1,1),5).SetEase(Ease.Linear);
*/
材質(zhì)Offet的使用及DOVector的作用
改變材質(zhì)offset的值
material.DOOffset(new Vector2(1, 1), 2);
不常用
改變提供的shader屬性的名稱(chēng)對(duì)應(yīng)的Vector4值
material.DOVector(new Vector4(0, 0, 0, 1), "_Color", 3);
10-材質(zhì)的顏色混合
DOColor同時(shí)執(zhí)行兩個(gè)會(huì)執(zhí)行最新的那個(gè)
* material.DOColor(Color.red,"_Color",2);
* material.DOColor(Color.green, "_Color", 2);
* 將 紅色-綠色 混合在一起 變成了黑色
`material.DOBlendableColor(Color.red,"_Color", 2);`
` material.DOBlendableColor(Color.green, "_Color",2);`
11-相機(jī)拓展方法(一)
//Camera camera = GetComponent<Camera>();
////改變屏幕的寬高比
//camera.DOAspect(0.5f,2);
////改變顏色
//camera.DOColor(Color.red,2);
//啟用協(xié)程
StartCoroutine(ChangeColor());
/// <summary>
/// 創(chuàng)建協(xié)程方法
/// </summary>
IEnumerator ChangeColor() {
Camera camera = GetComponent<Camera>();
//這個(gè)顏色是漸變的,時(shí)間越長(zhǎng)效果突出
camera.DOColor(Color.red, 0.1f);
yield return new WaitForSeconds(0.1f);
camera.DOColor(Color.blue, 5);
yield return new WaitForSeconds(5);
camera.DOColor(Color.red, 0.1f);
yield return new WaitForSeconds(0.1f);
camera.DOColor(Color.blue, 5);
}
//近切面
camera.DONearClipPlane(2,2);
//遠(yuǎn)切面
// camera.DOFarClipPlane(2,2);
camera.DOFieldOfView(1,5);
-
改變相機(jī)正交視域的大小
* Projection 投射综苔,放映
* 默認(rèn)的是Perspective透視的* Orthographic正交 * camera.DOOrthoSize(1,20);
關(guān)于unity服務(wù)器蹦調(diào)loading打不開(kāi)
https://blog.csdn.net/qq_42351033/article/details/85998157?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
13-相機(jī)分屏效果實(shí)現(xiàn)
漸變的改變相機(jī)的像素區(qū)域
new Rect(x軸 y軸 w寬 h高)
camera.DOPixelRect(new Rect(360,0,500,500),2);
方式二
使用百分比
多相機(jī)實(shí)現(xiàn)分屏效果的方式
新建相機(jī)Main Camera
xy的位置坐標(biāo)修改一下
camera.DORect(new Rect(0, 0, 500, 500),3);
14-相機(jī)晃動(dòng)效果實(shí)現(xiàn)
/**14-相機(jī)晃動(dòng)效果實(shí)現(xiàn)
* 傳遞參數(shù): duration持續(xù)時(shí)間
* strendth強(qiáng)度
* vibrato震動(dòng)次數(shù)
* 可忽略參數(shù)
* randomness隨機(jī)參數(shù)
* fade是否淡入
*
*/
camera.DOShakePosition(2,10,10);
15-Text拓展方法介紹
/**15-Text拓展方法介紹
* 需要在unity中創(chuàng)建一個(gè)text
*/
Text text = GetComponent<Text>();
text.DOColor(Color.red,2);
//實(shí)現(xiàn)文字一個(gè)字一個(gè)字的往外蹦 10秒內(nèi)打完 速度先快后慢后快
text.DOText("hahahahhahahaahah",10).SetEase(Ease.Linear);//設(shè)置為勻速
以上皆是DoTween對(duì)Unity封裝的一些方法惩系,下面記錄些關(guān)于它自身的一些方法使用
16-隊(duì)列—添加動(dòng)畫(huà)及添加延時(shí)
隊(duì)列:根據(jù)隊(duì)列一個(gè)一個(gè)的執(zhí)行對(duì)話
//生成一個(gè)對(duì)象
//方法一
Sequence quence = DOTween.Sequence();
//緩存其他對(duì)象的方法,做一些便利的操作 可用性較高
quence.Append(transform.DOMove(-Vector3.one,2));//把一項(xiàng)加入
quence.AppendInterval(1);//添加延時(shí) //先執(zhí)行第一個(gè)如筛,然后依次執(zhí)行 //方法二
quence.Append(transform.DOMove(new Vector3(1, 0, 1), 2));//把一項(xiàng)加入`
17-隊(duì)列—插入動(dòng)畫(huà)用法
在幀函數(shù)中蛆挫,按順序執(zhí)行
幀被多次執(zhí)行,則覆蓋之前的幀
添加到空白動(dòng)畫(huà) 比如第8s....
`Sequence quence = DOTween.Sequence();`
`quence.Append(transform.DOMove(Vector3.one, 2));//把一項(xiàng)加入 0-2s`
`quence.AppendInterval(1);//添加延時(shí)1s 2-3s`
`quence.Append(transform.DOMove(new Vector3(1, 0, 1), 2));//把一項(xiàng)加入 3-5s`
` quence.Insert(2, transform.DOMove(-Vector3.one, 1));//在0s插入動(dòng)畫(huà)`
18-隊(duì)列—加入方法的用法
quence.Insert(3, transform.DOScale(Vector3.one*2, 2));
quence.Join(transform.DOScale(Vector3.one,4));
腳本掛載在游戲物體上妙黍,測(cè)試的時(shí)候忽略了悴侵。。拭嫁。可免。我給掛載在攝像機(jī)上了emmmm
19-隊(duì)列—預(yù)添加方法的用法
預(yù)添加 會(huì)直接添加動(dòng)畫(huà)到Append的前面,也就是最開(kāi)始的時(shí)候
quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));
這里需要特別說(shuō)一下預(yù)添加的執(zhí)行順序問(wèn)題
它這里也采取了隊(duì)列的性質(zhì)做粤,不過(guò)浇借,預(yù)添加與原本的的隊(duì)列相比是一個(gè)反向隊(duì)列
quence.PrependInterval(1);//添加延時(shí)1s
quence.Prepend(transform.DOMove(-Vector3.one*2, 2));
預(yù)添加時(shí)間間隔
quence.PrependInterval(1);
20-隊(duì)列—回調(diào)函數(shù)的用法
quence.InsertCallback(5,InsertCallBack);
時(shí)間,方法名
quence.AppendCallback(AppendCallback);在隊(duì)列中需要回調(diào)的地方加入
/// <summary>
/// 方法一 等待時(shí)間的回調(diào)函數(shù)
/// </summary>
private void InsertCallBack() {
Debug.Log("回調(diào)函數(shù)");
}
/// <summary>
/// 方法二 隊(duì)列中的回調(diào)函數(shù)
/// </summary>
private void AppendCallback(){
Debug.Log("隊(duì)列中回調(diào)函數(shù)");
}
21-設(shè)置參數(shù)—參數(shù)設(shè)置方法及循環(huán)的設(shè)置
SetLoops
參數(shù) 循環(huán)次數(shù) -1是無(wú)限循環(huán) 正數(shù)怕品,就對(duì)應(yīng)相應(yīng)的循環(huán)次數(shù)
循環(huán)方式 LoopType.Yoyo 只來(lái)回播放妇垢、 (一來(lái)一回,一個(gè)周期)
LoopType.Restart 運(yùn)動(dòng)到后面閃回來(lái)肉康,繼續(xù)跑
LoopType.Incremental 一直朝一個(gè)方向走 中間會(huì)等一會(huì)(一個(gè)單位一個(gè)周期)
```
transform.DOMove(Vector3.one, 2).SetLoops(3, LoopType.Yoyo);
transform.DOMove(Vector3.one, 2).SetLoops(3, LoopType.Restart);
transform.DOMove(Vector3.one,2).SetLoops(3,LoopType.Incremental);
>設(shè)置自動(dòng)殺死動(dòng)畫(huà)
不然闯估,會(huì)緩存到DoTween內(nèi)部數(shù)據(jù)中
transform.DOMove(Vector3.one, 2).SetLoops(3, LoopType.Incremental).SetAutoKill(true);
###22-設(shè)置參數(shù)—From補(bǔ)間動(dòng)畫(huà)
*設(shè)置反向動(dòng)畫(huà) 。From() 從目標(biāo)點(diǎn)運(yùn)動(dòng)回去
*
*From(true) 成為一個(gè)增量
*從目標(biāo)點(diǎn)Vector3.one作為一個(gè)向量(包含方向吼和,大姓切健)
*即當(dāng)前坐標(biāo) + 傳入值 = 目標(biāo)值
*
*falese,傳入的就是目標(biāo)值炫乓,即傳入值 = 目標(biāo)值
*/
// transform.DOMove(Vector3.one, 2).SetLoops(3, LoopType.Incremental).From();
transform.DOMove(Vector3.one, 2).From(true);
###設(shè)置參數(shù)—設(shè)置延時(shí)及以速度為基準(zhǔn)的動(dòng)畫(huà)
延遲了3s才執(zhí)行
*transform.DOMove(Vector3.one,2).SetDelay(3);
*
*目標(biāo)點(diǎn) 速度
*transform.DOMove(Vector3.one,3).SetSpeedBased();
*
*參數(shù) true 以速度為基礎(chǔ)
*transform.DOMove(Vector3.one,3).SetSpeedBased(true);
*
*false則不是
###設(shè)置參數(shù)—設(shè)置ID及設(shè)置動(dòng)畫(huà)為增量運(yùn)動(dòng)
/**24-設(shè)置參數(shù)—設(shè)置ID及設(shè)置動(dòng)畫(huà)為增量運(yùn)動(dòng)
*
*/
//設(shè)置動(dòng)畫(huà)ID 參數(shù) int string object(不建議使用刚夺,設(shè)計(jì)裝箱拆箱)
transform.DOMove(Vector3.one, 2).SetId("Id");
//可以調(diào)用靜態(tài)方法 調(diào)用緩存的動(dòng)畫(huà) 減少性能
//DOTween.Play("Id");
//增量運(yùn)動(dòng) 當(dāng)前坐標(biāo) + 傳入值 = 目標(biāo)值
transform.DOMove(Vector3.one, 3).SetRelative(true);
//是否可回收
transform.DOMove(Vector3.one,3).SetRecyclable(true);
###設(shè)置動(dòng)畫(huà)的幀函數(shù)
transform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal, true);
第一個(gè)參數(shù) UpdateType :選擇使用的幀函數(shù)
UpdateType.Normal:更新每一幀中更新要求。
UpdateType.Late:在LateUpdate調(diào)用期間更新每一幀末捣。
UpdateType.Fixed:使用FixedUpdate調(diào)用進(jìn)行更新侠姑。
UpdateType.Manual:通過(guò)手動(dòng)DOTween.ManualUpdate調(diào)用進(jìn)行更新。
第二個(gè)參數(shù):為T(mén)RUE箩做,則補(bǔ)間將忽略Unity的Time.timeScale
###Ease 運(yùn)動(dòng)曲線的設(shè)置
1)以Ease枚舉作為參數(shù)
例如:
transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 3, 0f);
第二個(gè)參數(shù) Amplitude(振幅):實(shí)際就是移動(dòng)次數(shù)莽红,起始點(diǎn)移動(dòng)到目標(biāo)算移動(dòng)一次,再移動(dòng)回來(lái)移動(dòng)兩次
第三個(gè)參數(shù) period 值的范圍是 - 1~1
值 > 0時(shí)卒茬,為活動(dòng)范圍的衰減值船老,活動(dòng)范圍會(huì)由大變小
值 = 0時(shí)咖熟,就是均勻的在起始坐標(biāo)和目標(biāo)坐標(biāo)之間運(yùn)動(dòng)
值 < 0時(shí),會(huì)施加一個(gè)向目標(biāo)坐標(biāo)的一個(gè)力柳畔,活動(dòng)范圍一點(diǎn)點(diǎn)增大馍管,最后逼近目標(biāo)點(diǎn)
這兩個(gè)參數(shù)只對(duì)Flash, InFlash, OutFlash, InOutFlash這四種曲線有用,其他的曲線起作用的就只有Ease枚舉參數(shù)
運(yùn)動(dòng)曲線—Flash曲線的用法講解
2)使用AnimationCurve當(dāng)作參數(shù) 運(yùn)動(dòng)曲線—AnimationCurve設(shè)置曲線
例如:
transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
AnimationCurve 橫軸是時(shí)間,不過(guò)不是具體的時(shí)間薪韩,而是時(shí)間比例
AnimationCurve 縱軸是倍數(shù)
假設(shè)縱軸的值為v确沸,傳入DOMove的第一個(gè)參數(shù)endValue是e,起始點(diǎn)坐標(biāo)是s
此物體最后動(dòng)畫(huà)結(jié)束時(shí)的實(shí)際坐標(biāo)即為 v* (e -s)+ s
3)以回調(diào)函數(shù)為參數(shù)
例如:
`transform.DOMove(Vector3.one * 2, 1).SetEase(MyEaseFun);`
//返回值是運(yùn)動(dòng)距離的百分比 值應(yīng)為0~1之間俘陷,最后的值需為1,不然停留的位置不會(huì)是目標(biāo)位置
private float MyEaseFun(float time, float duration, float overshootOrAmplitude, float period)
{
return time / duration;
}
(4) 回調(diào)函數(shù)
1)動(dòng)畫(huà)完成回調(diào)
`transform.DOMove(Vector3.one, 2).OnComplete(() => { });`
>注意首字母大寫(xiě) 調(diào)用lamda表達(dá)式
2)動(dòng)畫(huà)被殺死時(shí)回調(diào)
transform.DOMove(Vector3.one, 2).OnKill(() => { });
3)動(dòng)畫(huà)播放時(shí)回調(diào),暫停后重新播放也會(huì)調(diào)用
transform.DOMove(Vector3.one, 3).OnPlay(() => { });
4)動(dòng)畫(huà)暫停時(shí)回調(diào)
transform.DOMove(Vector3.one, 2).OnPause(() => { });
5)動(dòng)畫(huà)回退時(shí)回調(diào)
以下情況會(huì)被調(diào)用
使用DORestart重新播放時(shí)
使用Rewind倒播動(dòng)畫(huà)完成時(shí)
使用DOFlip翻轉(zhuǎn)動(dòng)畫(huà)完成時(shí)
使用DOPlayBackwards反向播放動(dòng)畫(huà)完成時(shí)
transform.DOMove(Vector3.one, 2).OnRewind(() => { });
6)只在第一次播放動(dòng)畫(huà)時(shí)調(diào)用罗捎,在play之前調(diào)用
transform.DOMove(Vector3.one, 2).OnStart(() => { });
7)完成單個(gè)循環(huán)周期時(shí)觸發(fā)
transform.DOMove(Vector3.one, 2).OnStepComplete(() => { });
8)幀回調(diào)
transform.DOMove(Vector3.one, 2).OnUpdate(() => { });
9)在路徑動(dòng)畫(huà)時(shí),改變目標(biāo)點(diǎn)時(shí)的回調(diào)拉盾,參數(shù)為當(dāng)前目標(biāo)點(diǎn)的下標(biāo)
transform.DOMove(Vector3.one, 2).OnWaypointChange((value) => { });
> DoRewing直接閃到起點(diǎn)重新播放
DOSmoothRewing平滑倒退
DOFlip反轉(zhuǎn) 起始點(diǎn)變成目標(biāo)點(diǎn)
Goto 很少有人用桨菜,直接推翻邏輯
DOGoto(1,true)跳轉(zhuǎn)到時(shí)間點(diǎn)
###動(dòng)畫(huà)控制方法
1)播放
transform.DOPlay();
2)暫停
transform.DOPause();
3)重播
transform.DORestart();
4)倒播,此方法會(huì)直接退回起始點(diǎn)
transform.DORewind();
5)平滑倒播捉偏,此方法會(huì)按照之前的運(yùn)動(dòng)方式從當(dāng)前位置退回起始點(diǎn)
transform.DOSmoothRewind();
6)殺死動(dòng)畫(huà)
transform.DOKill();
7)翻轉(zhuǎn)補(bǔ)間的方向
transform.DOFlip();
8)跳轉(zhuǎn)時(shí)間點(diǎn)
第一個(gè)參數(shù)跳轉(zhuǎn)的時(shí)間點(diǎn)倒得,第二個(gè)參數(shù)是跳轉(zhuǎn)后是否播放動(dòng)畫(huà)
transform.DOGoto(1.5f, true);
9)反向播放動(dòng)畫(huà)
反向播放動(dòng)畫(huà),在動(dòng)畫(huà)播放到一半時(shí)執(zhí)行夭禽,會(huì)退回起始點(diǎn)霞掺,在一開(kāi)始執(zhí)行看不到效果是因?yàn)椋矬w本身就在起始點(diǎn)
transform.DOPlayBackwards();
10)正向播放動(dòng)畫(huà)
正向播放動(dòng)畫(huà)
transform.DOPlayForward();
11)TogglePause
當(dāng)暫停時(shí)讹躯,執(zhí)行就繼續(xù)播放菩彬,播放時(shí),執(zhí)行就暫停
transform.DOTogglePause();
>DOTogglePause()適用于for循環(huán)
包含了
1)播放
transform.DOPlay();
2)暫停
transform.DOPause();
兩種方法
但并非明確指定潮梯,需要理邏輯
### 獲取數(shù)據(jù)方法
一骗灶、類(lèi)方法
1)返回所有暫停的動(dòng)畫(huà),沒(méi)有則返回null
DOTween.PausedTweens();
2)返回所有真正播放的動(dòng)畫(huà)酷麦,沒(méi)有則返回null
DOTween.PlayingTweens();
3)獲取給定ID的數(shù)組
例如:
DOTween.TweensById("id", true);
返回滿足條件的動(dòng)畫(huà)數(shù)組
第一個(gè)參數(shù)是動(dòng)畫(huà)的ID
第二個(gè)參數(shù)是是否只收集正在播放的動(dòng)畫(huà)
4)返回給定對(duì)象的數(shù)組
例如:
DOTween.TweensByTarget(transform, true);
返回滿足條件的動(dòng)畫(huà)數(shù)組
第一個(gè)參數(shù)是播放動(dòng)畫(huà)的對(duì)象
例如:transform.DOMove(Vector3.one, 2); 第一個(gè)參數(shù)就傳入transform
material.DOColor(Color.White, 2); 第一個(gè)參數(shù)就傳入材質(zhì)對(duì)象material
第二個(gè)參數(shù)是是否只收集正在播放的動(dòng)畫(huà)
5)收集傳入的對(duì)象是否有動(dòng)畫(huà)在活動(dòng)
例如:
DOTween.IsTweening(transform);
第一個(gè)參數(shù)為檢測(cè)的對(duì)象
第二個(gè)參數(shù)為是否檢測(cè)動(dòng)畫(huà)在播放狀態(tài)
為true時(shí)矿卑,給定對(duì)象在播放狀態(tài)時(shí) 返回true
為false時(shí)喉恋,只檢測(cè)給定對(duì)象是否有動(dòng)畫(huà)(在pause狀態(tài)時(shí)也算)有則返回true
6)正在播放的動(dòng)畫(huà)的總數(shù)沃饶,目前處于延遲播放狀態(tài)的動(dòng)畫(huà)也算
DOTween.TotalPlayingTweens();
###二、實(shí)例方法
_tweener = transform.DOMove(Vector3.one, 2)
1)表示動(dòng)畫(huà)執(zhí)行時(shí)間的屬性轻黑,可讀可寫(xiě)
_tweener.fullPosition = 1;
2)表示動(dòng)畫(huà)執(zhí)行完的次數(shù)
_tweener.CompletedLoops()
3)獲取動(dòng)畫(huà)的延遲時(shí)間
_tweener.Delay();
4)獲取動(dòng)畫(huà)的持續(xù)時(shí)間
參數(shù)為true 表示計(jì)算循環(huán)的時(shí)間糊肤,無(wú)限循環(huán)為Infinity
_tweener.Duration(false)
5)動(dòng)畫(huà)已播放的時(shí)間
參數(shù)為true 表示計(jì)算循環(huán)的時(shí)間
_tweener.Elapsed()
6)返回動(dòng)畫(huà)進(jìn)度的百分比
起始點(diǎn)為0 目標(biāo)點(diǎn)為1 當(dāng)yoyo循環(huán)模式下,值會(huì)從0變到1再?gòu)?變到0
_tweener.ElapsedDirectionalPercentage()
7)返回動(dòng)畫(huà)區(qū)間已用的百分比
單次循環(huán)的數(shù)值為0到1
參數(shù)為 是否包含循環(huán) 為true時(shí) 返回值是循環(huán)總區(qū)間的已用百分比 若為無(wú)限循環(huán) 返回值為0
_tweener.ElapsedPercentage(true)
8)動(dòng)畫(huà)是否在活動(dòng)
_tweener.IsActive();
9)是否是反向動(dòng)畫(huà)
_tweener.IsBackwards();
10)動(dòng)畫(huà)是否完成
_tweener.IsComplete();
11)是否以初始化
_tweener.IsInitialized();
12)是否正在播放
_tweener.IsPlaying();
13)返回循環(huán)次數(shù)氓鄙, 無(wú)限循環(huán)為Infinity
_tweener.Loops();
(7) 攜程方法
private IEnumerator Wait()
{
_tweener = transform.DOMove(Vector3.one, 2);
1)等待動(dòng)畫(huà)執(zhí)行完
yield return _tweener.WaitForCompletion();
2)等待指定的循環(huán)次數(shù)
參數(shù)為執(zhí)行次數(shù)馆揉,等待傳入的循環(huán)次數(shù)后,繼續(xù)執(zhí)行
若是傳入的次數(shù)大于動(dòng)畫(huà)的循環(huán)次數(shù) 則在動(dòng)畫(huà)結(jié)束時(shí)繼續(xù)執(zhí)行
yield return _tweener.WaitForElapsedLoops(2);
3)等待動(dòng)畫(huà)被殺死
yield return _tweener.WaitForKill();
4)等待動(dòng)畫(huà)執(zhí)行指定時(shí)間
參數(shù)為時(shí)間抖拦,動(dòng)畫(huà)執(zhí)行傳入的時(shí)間之后或動(dòng)畫(huà)執(zhí)行完畢升酣,繼續(xù)執(zhí)行
yield return _tweener.WaitForPosition(0.5f);
5)等待動(dòng)畫(huà)回退
以下情況會(huì)繼續(xù)執(zhí)行函數(shù)
使用DORestart重新播放時(shí)
使用Rewind倒播動(dòng)畫(huà)完成時(shí)
使用DOFlip翻轉(zhuǎn)動(dòng)畫(huà)完成時(shí)
使用DOPlayBackwards反向播放動(dòng)畫(huà)完成時(shí)
yield return _tweener.WaitForRewind();
6)等待Start執(zhí)行后繼續(xù)執(zhí)行
yield return _tweener.WaitForStart();
}
###
/**路徑動(dòng)畫(huà)—位置參數(shù)
* DOPath局部 DoLocalPath
* 實(shí)現(xiàn)可視化操作
* 公有字段舷暮,保存點(diǎn)
* public Transform[] PointList;
*
* 簡(jiǎn)便獲取數(shù)組的參數(shù)
* 1.位置
* 2.持續(xù)時(shí)間
* 3.運(yùn)動(dòng)曲線
* PathType.Linear直線運(yùn)動(dòng)
* PathType.CatmullRom 曲線運(yùn)動(dòng)
*
* 4.LookAt朝向PathMode.Full3D
* 參數(shù)
* Ignord=0 會(huì)忽略lookAt
* Full3D=1 常規(guī)的3D效果 相當(dāng)于沒(méi)有限制的lookAt
* TopDown2D=2 朝向只能上下的改變
* Sidescroller2D=3 朝向只能左右的改變
*
* 5.分辨率 50
* 0-100 消耗性能逐漸高
*
* 6.路徑顏色Color.blue
* 默認(rèn)白色
*
* SetOptions畫(huà)的圈是否是閉合的
* true完整的回路
* SetOptions(true,AxisConstraint.Z).
* AxisConstraint軸向枚舉 鎖定軸 會(huì)變成單方面運(yùn)動(dòng)
* --AxisConstraint.None取消鎖定
*
* 鎖定旋轉(zhuǎn)
* AxisConstraint.Y
* 跟上面一樣,只是參數(shù)的傳遞位置不一樣
*
*
* SetLookAt(0)看向路徑的前方
* 0-1之間
* SetOptions(true)開(kāi)始時(shí)確定方向后就不會(huì)變化了
* 是否是閉合運(yùn)動(dòng)對(duì)它有一定的影響
* false噩茄,運(yùn)動(dòng)最后下面,物體的朝向移動(dòng)是路徑的運(yùn)動(dòng)方向的前方
*
*/
//Vector3[] positons = PointList.Select(u=>u.position).ToArray();
//Vector3[] positons = new Vector3[] { new Vector3(0,0,0), new Vector3(2, 0, 0), new Vector3(0, 0, -2), new Vector3(2, 0, -2) };
//ositons[2] = new Vector3();
var positons = PointList.Select(u => u.position).ToArray();
transform.DOPath(positons, 2, PathType.CatmullRom,PathMode.Full3D,50,Color.red)
.SetOptions(true,AxisConstraint.None,AxisConstraint.Y).SetLookAt(0);
DOTween常用方法詳解
http://www.manongjc.com/detail/10-femzgrokaxuqdnx.html