Dotween

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(新版本中)

image.png
image.gif

?點(diǎn)擊
image.png
image.gif

?

image.png
image.gif

?

就可以了

圖片.png

點(diǎn)擊Documentation 官網(wǎng)上了解
http://dotween.demigiant.com/documentation.php
圖片.png

有點(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à)

圖片.png
     顏色漸變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;//掛在物體上的腳本 獲得組件的子才子

  1. //獲取多個(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绩聘,隨后出現(xiàn)的幾起案子沥割,更是在濱河造成了極大的恐慌,老刑警劉巖凿菩,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件机杜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡衅谷,警方通過(guò)查閱死者的電腦和手機(jī)椒拗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)获黔,“玉大人陡叠,你說(shuō)我怎么就攤上這事≈矗” “怎么了枉阵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)预茄。 經(jīng)常有香客問(wèn)我兴溜,道長(zhǎng),這世上最難降的妖魔是什么耻陕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任拙徽,我火速辦了婚禮,結(jié)果婚禮上诗宣,老公的妹妹穿的比我還像新娘膘怕。我一直安慰自己,他們只是感情好召庞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布岛心。 她就那樣靜靜地躺著,像睡著了一般篮灼。 火紅的嫁衣襯著肌膚如雪忘古。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天诅诱,我揣著相機(jī)與錄音髓堪,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛干旁,可吹牛的內(nèi)容都是我干的驶沼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼争群,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼商乎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起祭阀,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鹉戚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后专控,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抹凳,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年伦腐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赢底。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柏蘑,死狀恐怖幸冻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咳焚,我是刑警寧澤洽损,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站革半,受9級(jí)特大地震影響碑定,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜又官,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一延刘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧六敬,春花似錦碘赖、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至典勇,卻和暖如春劫哼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背割笙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伤溉。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓般码,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乱顾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子板祝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359