久久伊人一区二区三区四区-久久伊人影视-久久伊人影院-久久伊人中文字幕-亚洲成在人色婷婷-亚洲大成色www永久网

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Unity中DOTween的用法解析

Unity中DOTween的用法解析

來源:千鋒教育
發布人:syq
時間: 2022-06-08 11:58:00 1654660680

  /*

  * DOTween真的比iTween好很多:

  * 1.編寫方面更加人性化

  * 2.效率高很多

DOTween的用法

  * DoTween插件的基本概念以及簡介:

  * 1.DoTween實現的是通用的緩動算法,用于給Unity中的游戲對象添加動作動畫。

  * 2.DoTween的API風格一律采用鏈式調用,再配以Lambda匿名函數的調用,可以配置出各種各樣想要的豐富的動畫效果。

  * 3.DoTween還可以實現隊列延遲回調函數,也能完成各種異步延遲執行的功能。

  * 4.DoTween為了方便開發者使用,對各種Unity的腳本對象進行了函數綁定,例如:

  * Transform, Color, Text, Material等都可以直接調用DoTween的動畫函數

  *

  * 綁定的快捷方式動畫函數API

  * 函數名稱解釋:

  * 都是以DO開頭,帶Local的就是局部坐標系,不帶的指的是基于世界坐標系

  * 所有函數調用都是鏈式調用

  * 可以自己設置緩動算法的類型,也可以用一些已經配置好的緩動算法,比如跳躍Jump

  * 這類函數的API調用更符合常用函數的使用習慣,move就是移動,scale就是縮放,rotation就是旋轉,color就是顏色,數值的變化就是float

  * 更多的功能用法直接在程序中自動補全就可以理解意思了

  *

  * 1.以DO開頭的方法:就是補間動畫的方法。例如:transform.DOMoveX(100,1)

  * 2.以Set開頭的方法:設置補間動畫的一些屬性。例如:myTween.SetLoops(4, LoopType.Yoyo)

  * 3.以On開頭的方法:補間動畫的回調方法。例如:myTween.OnStart(myStartFunction)

  好了,正式開始!首先去Unity應用商城下載DOTween,導入工程。

  */

  using System.Collections;

  using UnityEngine;

  using DG.Tweening;

  using UnityEngine.UI;

  public class CubeAnimator : MonoBehaviour

  {

    Camera _camera;

    Material material;

    public Text text;

    Tweener _tweener;

    void Start()

    {

  /*DOTween初始化與全局設置:

  當你第一次創建一個Tween時,DOTween就會自動初始化(只初始化一次)。

  當然,也可以使用DOTween.Init方法進行自定義,但要在第一次創建一個Tween前。所有創建的Tween都會受DOTween.Init方法的影響。

  *recycleAllByDefault :如果為true,則當Tween完成時就會被回收,放到一個池中;否則就會被destroy

  *useSafeMode :效率會稍微降低,但更安全

  *logBehaviour :默認值為只打印錯誤信息

  */

  DOTween.Init(false, true, LogBehaviour.ErrorsOnly);

  _camera = Camera.main;

  material = GetComponent().material;

  //一、Unity常用組件拓展方法

  //(1) Transform拓展方法

  TestTransformFuncAnim();

  //(2) _camera拓展方法

  TestCameraFuncAnim();

  //(3) Material拓展方法

  TestMaterialFuncAnim();

  //(4) Text拓展方法

  TestTextFuncAnim();

  //二、Dotween常用方法

  //Sequence動畫序列函數API

  /*

  * 基本解釋說明:

  * 動畫序列其實就是包含了一組Tweener并且操作其他Tweener的一個工具

  * 動畫序列并不一定要一個接著一個的播放和執行

  * 動畫序列之間可以重疊和重復

  * 你可以以任何你所期望的形式混合夾雜著去使用它們

  * DOTween.Sequence()會創建一個動畫序列對象,以后所有的Sequence函數都會返回這個Sequence對象,也就是說動畫序列也可以鏈式調用

  * Append(tweener) 可以在隊尾追加一個tweener,會按照順序依次執行這個tweener序列,一個tweener完成后執行下一個。

  * Insert(time, tweener) 可以在隊列中插入一個tweener,第1個參數代表插入的時間點,第2個參數代表在此時間點插入的動畫。

  * AppendInterval(time) 可以在隊尾追加一個時間間隔功能函數,在隊列執行的過程中,停頓一個時間,然后繼續執行。

  * AppendCallback(func) 可以在隊尾追加一個匿名函數,在隊列中執行一個回調。

  */

  //(5) Sequence 隊列

  TestSequenceAnim();

  //(6) Tweener的設置

  SetterTweener();

  //7.關于Ease緩動函數的說明

  /*

  * 基本概念說明:

  * 緩動函數是指動畫效果在執行時的速度,使其看起來更加真實。

  * Ease.InSine 表示正弦加速動作

  * Ease.OutSine 表示正弦減速動作

  * Ease.InOutSine 表示正弦加速減速動作

  * 每個效果都分3種緩動方式:

  * (1).easeIn:從0開始加速的緩動

  * (2).easeOut:減速到0的緩動

  * (3).easeInOut:前半段從0開始加速,后半段減速到0的緩動

  * 其中Linear是線性緩動,也叫無緩動效果,沒有上述說明中的效果。

  */

  //(7) 運動曲線的設置

  TestEaseFuncAnima();

  //(8) 動畫回調事件

  TestCallBack();

  //(9) 動畫控制方法

  TestAnimatorController();

  //(10) 獲取數據方法

  GetTweenerDat();

  //(11) 協程方法

  StartCoroutine(Wait());

  }

  //(1) Transform拓展方法

  private void TestTransformFuncAnim()

  {

  //Position

  //1)改變世界坐標

  //移動方法,第一個參數是要移動到的目標點,不是移動這個向量的距離

  transform.DOMove(new Vector3(1, 1, 1), 2);

  //只控制x軸上的移動,其他兩個方向同理

  transform.DOMoveX(1, 2);

  //2)改變局部坐標

  transform.DOLocalMove(new Vector3(1, 1, 1), 2);

  transform.DOLocalMoveX(1, 2);

  //Rotation

  //1)世界旋轉

  //旋轉到給定的值,改變的是歐拉角

  transform.DORotate(new Vector3(0, 90, 0), 2);

  //旋轉到給定的值,改變的是四元數

  transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);

  //2)局部旋轉

  // 旋轉到給定的值,改變的是歐拉角

  transform.DOLocalRotate(new Vector3(0, 90, 0), 2);

  // 旋轉到給定的值,改變的是四元數

  transform.DOLocalRotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);

  // 在給定時間內,平滑的讓自身的z軸正方向指向目標點

  transform.DOLookAt(new Vector3(0, 0, 0), 2);

  // Scale

  //同上面一樣,這里改變物體的縮放到目標值

  transform.DOScale(new Vector3(2, 2, 2), 2);

  //其他兩個軸向同理

  transform.DOScaleX(3, 2);

  //Punch

  /*

  第一個參數 punch:表示方向及強度

  第二個參數 duration:表示動畫持續時間

  第三個參數 vibrato:震動次數

  第四個參數 elascity: 這個值是0到1的

  當為0時,就是在起始點到目標點之間運動

  不為0時,會把你賦的值乘上一個參數,作為你運動方向反方向的點,物體在這個點和目標點之間運動

  */

  transform.DOPunchPosition(new Vector3(0, 1, 0), 2, 2, 0.1f);

  transform.DOPunchRotation(new Vector3(0, 90, 0), 2, 2, 0.1f);

  transform.DOPunchScale(new Vector3(2, 2, 2), 2, 2, 0.1f);

  //Shake

  /*

  * 參數:持續時間,力量,震動,隨機性,淡出

  力量:實際就是震動的幅度,可以理解成相機施加的力的大小 使用Vector3可以選擇每個軸向不同的強度

  震動:震動次數

  隨機性:改變震動方向的隨機值(大小:0~180)

  淡出:就是運動最后是否緩慢移動回到原本位置

  */

  transform.DOShakePosition(1, 5, 10, 50, true);

  transform.DOShakeRotation(3);

  transform.DOShakeScale(3);

  //帶Blend名稱的方法,允許混合動畫

  //原本同時執行兩個Move方法,只會執行最新的一個動畫命令

  //例如:

  transform.DOMove(Vector3.one, 2);

  transform.DOMove(Vector3.one * 2, 2);

  //結果是物體運動到了(2,2,2)坐標上

  //DOBlendableMoveBy方法有兩個特點

  //1)允許多個同時執行

  //例如:

  transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);

  transform.DOBlendableMoveBy(new Vector3(-1, 0, 0), 1);

  //假設起始為(0,0,0),最后動畫停止時的坐標就是(0,1,1)

  //2)它是增量動畫

  transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);

  //假設其實點為(1,1,1),最后動畫停止時的坐標就是(2,2,2)

  //它的參數不是目標點,而是要移動的量

  /*以下三個函數同理

  transform.DOBlendableRotateBy

  transform.DOBlendableScaleBy()

  transform.DOBlendablePunchRotation()

  */

 }

  //(2) Camera拓展方法

  private void TestCameraFuncAnim()

  {

  //1)調整屏幕視角的寬高比 第一個參數是寬高的比值

  _camera.DOAspect(0.6f, 2);

  //2)改變相機background參數的顏色

  _camera.DOColor(Color.blue, 2);

  //3)改變相機近切面的值

  _camera.DONearClipPlane(200, 2);

  //4)改變相機遠切面的值

  _camera.DOFarClipPlane(2000, 2);

  //5)改變相機FOV的值

  _camera.DOFieldOfView(30, 2);

  //6)改變相機正交大小

  _camera.DOOrthoSize(10, 2);

  //7)按照屏幕像素計算的顯示范圍

  _camera.DOPixelRect(new Rect(0f, 0f, 600f, 500f), 2);

  //8)按照屏幕百分比計算的顯示范圍

  _camera.DORect(new Rect(0.5f, 0.5f, 0.5f, 0.5f), 2);

  /*

  9)相機震動

  相機震動效果 參數:持續時間,力量,震動,隨機性,淡出

  力量:實際就是震動的幅度,可以理解成相機施加的力的大小 使用Vector3可以選擇每個軸向不同的強度

  震動:震動次數

  隨機性:改變震動方向的隨機值(大小:0~180)

  淡出:就是運動最后是否緩慢移動回到原本位置

  */

  _camera.DOShakePosition(1, 10, 10, 50, false);

 }

  //(3) Material拓展方法

  private void TestMaterialFuncAnim()

  {

  // 1)改變顏色

  material.DOColor(Color.black, 2);

  // 2)按照shader的屬性名,修改顏色

  material.DOColor(Color.clear, "_Color", 2);

  // 3)修改alpha值

  material.DOFade(0, 2);

  // 4)顏色漸變

  // Gradient是unity的漸變編輯器(下面有漸變編輯器的圖)

  // material.DOGradientColor(Gradient, "_Color", 3);

  // 5)改變材質offset的值

  material.DOOffset(new Vector2(1, 1), 2);

  // 6)改變提供的shader屬性的名稱對應的Vector4值

  material.DOVector(new Vector4(0, 0, 0, 1), "_Color", 3);

  // 7)顏色混合

  // 跟位置混合動畫同理,可以同時執行而不干擾,產生混合在一起的顏色

  material.DOBlendableColor(Color.red, "_Color", 3);

 }

  //(4) Text拓展方法

  private void TestTextFuncAnim()

  {

  //頭三個都是常規方法,不多介紹了

  text.DOColor(Color.black, 2);

  text.DOFade(0, 2);

  text.DOBlendableColor(Color.black, 2);

  //打字機效果

  //是把第一個參數傳入的內容按照時間,一個字一個字的輸入到文本框中

  text.DOText("context", 2);

  }

  //(5) Sequence 隊列

  private void TestSequenceAnim()

  {

  Sequence quence = DOTween.Sequence();

  //1)添加動畫到隊列中

  quence.Append(transform.DOMove(Vector3.one, 2));

  //2)添加時間間隔

  quence.AppendInterval(1);

  //3)按時間點插入動畫

  //第一個參數為時間,此方法把動畫插入到規定的時間點

  // 以這句話為例,它把DORotate動畫添加到此隊列的0秒時執行,雖然它不是最先添加進隊列的

  quence.Insert(0, transform.DORotate(new Vector3(0, 90, 0), 1));

  //4)加入當前動畫

  // Join會加入和讓動畫與當前正在執行的動畫一起執行

  //如下兩行代碼,DOMove會和DOScale一起執行

  quence.Append(transform.DOScale(new Vector3(2, 2, 2), 2));

  quence.Join(transform.DOMove(Vector3.zero, 2));

  //5)預添加動畫

  // 預添加 會直接添加動畫到Append的前面,也就是最開始的時候

  //quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));

  //這里需要特別說一下預添加的執行順序問題

  //它這里也采取了隊列的性質,不過,預添加與原本的的隊列相比是一個反向隊列

  //例如:

  // Sequence quence = DOTween.Sequence();

  //quence.Append(transform.DOMove(Vector3.one, 2));

  //quence.Prepend(transform.DOMove(-Vector3.one * 2, 2));

  //quence.PrependInterval(1);

  //執行順序是 PrependInterval----Prepend---- - Append

  //就是最后添加的會在隊列的最頂端

  //6)預添加時間間隔

  quence.PrependInterval(1);

  // 回調函數

  // 1)預添加回調

  quence.PrependCallback(

  () => { Destroy(gameObject); }

 );

  // 2)在規定的時間點加入回調

  quence.InsertCallback(1,

  () => { Destroy(gameObject); }

 );

  //3)添加回調

  quence.AppendCallback(

  ()=>{ Destroy(gameObject); }

 );

}

  //(6) Tweener的設置

  private void SetterTweener()

  {

  TweenParams para = new TweenParams();

  // 1)設置動畫循環

  // 第一個參數是循環次數 - 1代表無限循環

  // 第二個參數是循環方式

  // Restart 重新開始

  // Yoyo 從起始點運動到目標點,再從目標點運動回來,這樣循環

  //Incremental 一直向著運動方向運動

  para.SetLoops(-1, LoopType.Yoyo);

  //2)設置參數

  transform.DOMove(Vector3.one, 2).SetAs(para);

  //3)設置自動殺死動畫

  transform.DOMove(Vector3.one, 1).SetAutoKill(true);

  //4)from補間

  // 例如;

  transform.DOMove(Vector3.one, 2).From(true);

  //From參數 isRelative(相對的):

  //為true,傳入的就是偏移量,即當前坐標 + 傳入值 = 目標值

  //為falese,傳入的就是目標值,即傳入值 = 目標值

  //5)設置動畫延時

  transform.DOMove(Vector3.one, 2).SetDelay(1);

  //6)設置動畫運動以速度為基準 例如:

  transform.DOMove(Vector3.one, 1).SetSpeedBased();

  //使用SetSpeedBased時,移動方式就變成以速度為基準

  //原本表示持續時間的第二個參數,就變成表示速度的參數,每秒移動的單位數

  //7)設置動畫ID

  transform.DOMove(Vector3.one, 2).SetId("Id");

  //8)設置是否可回收

  // 為true的話,動畫播放完會被回收,緩存下來,不然播完就直接銷毀

  transform.DOMove(Vector3.one, 2).SetRecyclable(true);

  //9)設置動畫為增量運動

  //例如:

  transform.DOMove(Vector3.one, 2).SetRelative(true);

  //SetRelative參數 isRelative(相對的):

  //為true,傳入的就是偏移量,即當前坐標 + 傳入值 = 目標值

  //為falese,傳入的就是目標值,即傳入值 = 目標值

  //10)設置動畫的幀函數

  //例如:

  transform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal, true);

  //第一個參數 UpdateType :選擇使用的幀函數

  //UpdateType.Normal:更新每一幀中更新要求。

  //UpdateType.Late:在LateUpdate調用期間更新每一幀。

  //UpdateType.Fixed:使用FixedUpdate調用進行更新。

  //UpdateType.Manual:通過手動DOTween.ManualUpdate調用進行更新。

  //第二個參數:為TRUE,則補間將忽略Unity的Time.timeScale

  }

  //(7) 運動曲線的設置

  private void TestEaseFuncAnima()

  {

  //關于Ease緩動函數的說明

  /*

  * 基本概念說明:

  * 緩動函數是指動畫效果在執行時的速度,使其看起來更加真實。

  * Ease.InSine 表示正弦加速動作

  * Ease.OutSine 表示正弦減速動作

  * Ease.InOutSine 表示正弦加速減速動作

  * 每個效果都分3種緩動方式:

  * (1).easeIn:從0開始加速的緩動

  * (2).easeOut:減速到0的緩動

  * (3).easeInOut:前半段從0開始加速,后半段減速到0的緩動

  * 其中Linear是線性緩動,也叫無緩動效果,沒有上述說明中的效果。

  */

  //線性緩動,勻速運動

  //transform.DOMove(new Vector3(0, 5, 0), 2).SetRelative().SetLoops(-1, LoopType.Yoyo).SetEase(Ease.Linear);

  //先快后慢正弦運動

  transform.DOMove(new Vector3(0, 5, 0), 2).SetRelative().SetLoops(-1, LoopType.Yoyo).SetEase(Ease.InOutSine);

  }

  //(8) 動畫回調事件

  private void TestCallBack()

  {

  //1)動畫完成回調

  transform.DOMove(Vector3.one, 2).OnComplete(() => { });

  //2)動畫被殺死時回調

  transform.DOMove(Vector3.one, 2).OnKill(() => { });

  //3)動畫播放時回調,暫停后重新播放也會調用

  transform.DOMove(Vector3.one, 3).OnPlay(() => { });

  //4)動畫暫停時回調

  transform.DOMove(Vector3.one, 2).OnPause(() => { });

  //5)動畫回退時回調

  // 以下情況會被調用

  //使用DORestart重新播放時

  //使用Rewind倒播動畫完成時

  //使用DOFlip翻轉動畫完成時

  //使用DOPlayBackwards反向播放動畫完成時

  transform.DOMove(Vector3.one, 2).OnRewind(() => { });

  //6)只在第一次播放動畫時調用,在play之前調用

  transform.DOMove(Vector3.one, 2).OnStart(() => { });

  //7)完成單個循環周期時觸發

  transform.DOMove(Vector3.one, 2).OnStepComplete(() => { });

  //8)幀回調

  transform.DOMove(Vector3.one, 2).OnUpdate(() => { });

  //9)在路徑動畫時,改變目標點時的回調,參數為當前目標點的下標

  transform.DOMove(Vector3.one, 2).OnWaypointChange((value) => { });

  }

  //(9) 動畫控制方法

  private void TestAnimatorController()

  {

  //1)播放

  transform.DOPlay();

  //2)暫停

  transform.DOPause();

  // 3)重播

  transform.DORestart();

  // 4)倒播,此方法會直接退回起始點

  transform.DORewind();

  // 5)平滑倒播,此方法會按照之前的運動方式從當前位置退回起始點

  transform.DOSmoothRewind();

  // 6)殺死動畫

  transform.DOKill();

  // 7)翻轉補間的方向

  transform.DOFlip();

  // 8)跳轉時間點

  // 第一個參數跳轉的時間點,第二個參數是跳轉后是否播放動畫

  transform.DOGoto(1.5f, true);

  // 9)反向播放動畫

  // 反向播放動畫,在動畫播放到一半時執行,會退回起始點,在一開始執行看不到效果是因為,物體本身就在起始點

  transform.DOPlayBackwards();

  // 10)正向播放動畫

  // 正向播放動畫

  transform.DOPlayForward();

  // 11)TogglePause

  // 當暫停時,執行就繼續播放,播放時,執行就暫停

  transform.DOTogglePause();

 }

  private void GetTweenerDat()

  {

  // 一、類方法

  //1)返回所有暫停的動畫,沒有則返回null

  DOTween.PausedTweens();

  //2)返回所有真正播放的動畫,沒有則返回null

  DOTween.PlayingTweens();

  //3)獲取給定ID的數組

  //例如:

  DOTween.TweensById("id", true);

  //返回滿足條件的動畫數組

  //第一個參數是動畫的ID

  //第二個參數是是否只收集正在播放的動畫

  //4)返回給定對象的數組

  //例如:

  DOTween.TweensByTarget(transform, true);

  //返回滿足條件的動畫數組

  //第一個參數是播放動畫的對象

  //例如:transform.DOMove(Vector3.one, 2); 第一個參數就傳入transform

  // material.DOColor(Color.White, 2); 第一個參數就傳入材質對象material

  //第二個參數是是否只收集正在播放的動畫

  //5)收集傳入的對象是否有動畫在活動

  //例如:

  DOTween.IsTweening(transform);

  //第一個參數為檢測的對象

  //第二個參數為是否檢測動畫在播放狀態

  //為true時,給定對象在播放狀態時 返回true

  //為false時,只檢測給定對象是否有動畫(在pause狀態時也算)有則返回true

  // 6)正在播放的動畫的總數,目前處于延遲播放狀態的動畫也算

  DOTween.TotalPlayingTweens();

  // 二、實例方法

  _tweener = transform.DOMove(Vector3.one, 2);

  //1)表示動畫執行時間的屬性,可讀可寫

  _tweener.fullPosition = 1;

  // 2)表示動畫執行完的次數

  _tweener.CompletedLoops();

  // 3)獲取動畫的延遲時間

  _tweener.Delay();

  // 4)獲取動畫的持續時間

  // 參數為true 表示計算循環的時間,無限循環為Infinity

  _tweener.Duration(false);

  //5)動畫已播放的時間

  // 參數為true 表示計算循環的時間

  _tweener.Elapsed();

  //6)返回動畫進度的百分比

  // 起始點為0 目標點為1 當yoyo循環模式下,值會從0變到1再從1變到0

  _tweener.ElapsedDirectionalPercentage();

  //7)返回動畫區間已用的百分比

  //單次循環的數值為0到1

  //參數為 是否包含循環 為true時 返回值是循環總區間的已用百分比 若為無限循環 返回值為0

  _tweener.ElapsedPercentage(true);

  //8)動畫是否在活動

  _tweener.IsActive();

  // 9)是否是反向動畫

  _tweener.IsBackwards();

  //10)動畫是否完成

  _tweener.IsComplete();

  //11)是否以初始化

  _tweener.IsInitialized();

  //12)是否正在播放

  _tweener.IsPlaying();

  //13)返回循環次數, 無限循環為Infinity

  _tweener.Loops();

  }

  //協程方法

  private IEnumerator Wait()

  {

  _tweener = transform.DOMove(Vector3.one, 2);

  // 1)等待動畫執行完

  yield return _tweener.WaitForCompletion();

  //2)等待指定的循環次數

  //參數為執行次數,等待傳入的循環次數后,繼續執行

  //若是傳入的次數大于動畫的循環次數 則在動畫結束時繼續執行

  yield return _tweener.WaitForElapsedLoops(2);

  //3)等待動畫被殺死

  yield return _tweener.WaitForKill();

  //4)等待動畫執行指定時間

  //參數為時間,動畫執行傳入的時間之后或動畫執行完畢,繼續執行

  yield return _tweener.WaitForPosition(0.5f);

  //5)等待動畫回退

  // 以下情況會繼續執行函數

  //使用DORestart重新播放時

  //使用Rewind倒播動畫完成時

  //使用DOFlip翻轉動畫完成時

  //使用DOPlayBackwards反向播放動畫完成時

  yield return _tweener.WaitForRewind();

  // 6)等待Start執行后繼續執行

  yield return _tweener.WaitForStart();

  }

 }

 更多關于ITUnity培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 熟妇人妻AV无码一区二区三区| 久久久久99精品成人片| 色偷偷人人澡久久超碰97| 国产精品久久久久国产A级| 亚洲精品无码专区在线播放 | 丰满人妻妓熟妇又伦精品软件| 自拍偷自拍亚洲精品10P| 国产精品亚洲片在线| 精品无码久久久久国产动漫3D| 九月婷婷人人澡人人添人人爽| 强奷乱码中文字幕熟女导航| 好深好湿好硬顶到了好爽| 啊灬啊灬啊灬快灬少妇软件| 日本少妇自慰高清喷浆| 高清FREESEXMOVIES性TV出水| 野草高清视频免费| 内射少妇骚B一√| 国产成人亚洲精品青草| 亚洲 欧美 激情 小说 另类| 国产国产精品人在线观看| 我趁老师睡觉摸她奶脱她内裤| 日本熟妇XXXX| 图片区小说区AV区| 亚洲AV无码一区二区三区18| 国产精品亲子乱子伦XXXX裸| 久久精品亚洲乱码伦伦中文| 男人GAY自慰吞精网站| 亚洲AV综合色区无码二区偷拍| 久久久久久九九精品久| 好男人好资源电影在线播放 | 性欧美丰满熟妇XXXX性久久久| 色视频综合无码一区二区三区| 超清无码熟妇人妻AV在线电影| 男人J放进女人J无遮挡免费看| 男人J放进女人P全黄动态图| 粗大黑人巨精大战欧美成人| 亚洲乱码精品久久久久..| 西方最大但人文艺术| 中文无码乱人伦中文视频在线V| 国产成人午夜在线视频A站| 国产精品亚洲专区无码导航| 制服丝袜AV无码专区完整版| 看全色黄大色黄大片 视频| 好深好湿好硬顶到了好爽| 粉嫩AV无码一区二区三区| 成人无码黄动漫在线播放| 在线看AV的网站| 欧美精品少妇XXXXⅩ另类| 肥胖BMGBMGBMG多毛图片| 亚洲AVAV电影AV天堂18禁| 国产成人精品综合久久久| 一区二区av在线| 丰满大屁股熟女偷拍内射| 欧妇女乱妇女乱视频| 亚洲国产精品久久久久爰色欲| 久久夜色精品国产噜噜麻豆| 亚洲综合色区另类小说| 国产精品成人影院在线观看| 国内精品久久影院综合日日| 一本大道色卡1卡2卡3| 国产美女丝袜一级肛交蜜桃| 男男暴菊GAY无套网站| 日本狂喷奶水在线播放212| 无码无套少妇毛多18PX| 人妻被黑人与白人巨大中出| 强开少妇嫩苞又嫩又紧小说| 国产在线孕妇孕交| 成人做受120视频试看| 波多野结衣AV高清一区二区三区| WWW国产无套内射COM| 午夜无码一区二区三区在线| 久久人妻无码一区二区三区AV | 日本大片免A费观看视频| 日本55丰满熟妇厨房伦| 国产成人亚洲精品无码AV大片| 中国老太卖婬HD播放| 久久精品国产久精国产果冻传媒| 亚洲AV无码1区2区久久| А√天堂资源8在线官网地址 | 欧美激情视频一区| 漂亮人妻洗澡被公强 日日躁| 一碰就有水的女人男人喜欢?| 日韩乱码人妻无码系列中文字幕 | 国产免费一区二区三区在线观看| 纯肉无遮挡H肉动漫在线观看网址| 中文字幕乱码人妻无码久久| 国产成人愉拍免费视频| 狠狠婷婷色五月中文字幕| 图片区小说区AV区| 亚洲 欧美 激情 小说 另类| 一面膜上边一面膜下边视频| 车内挺进尤物少妇紧窄| 国产精品久久久久国产A级| 久久精品国产99国产精品导航| 亲近相奷对白中文字幕| 人妻 白嫩 蹂躏 惨叫| 我的大胸继拇在线观看| 男人添女人下部高潮全视频| 久久久久久九九精品久| 一区三区四区产品乱码| 老师黑色丝袜被躁翻了AV| 国内精品乱码卡一卡2卡三卡新区 国内精品视频一区二区三区八戒 国内偷自第一区二区三区 | 久久99精品久久久久久野外| 房东天天吃我奶躁我| YIN荡到骨子里的SAO货| 欧美亚洲日韩国产区三| 中文字幕人妻被公上司喝醉| 日本XXXX裸体XXXX自慰| 成人女人A级毛片免费软件| 成年轻人电影WWW无码| 人与畜禽CORPORATION| 国产精品民宅偷窥盗摄| 我趁老师睡觉摸她奶脱她内裤| 国产成人综合久久精品| 民工把我奶头掏出来了怎么办| 成人无码无遮挡很H在线播放 | 国色天香在线观看全集免费播放| 中文字幕精品无码一区二区三区| 精品无码人妻一区二区三区品| 亚洲色偷无码一区二区蜜桃AV | 久久久久亚洲AV综合仓井空| 玩弄少妇秘书人妻系列| 无码任你躁久久久久久久| 赤裸人妻撅起肥白大屁股| 美女MM131爽爽爽| 黑人狂桶女人高潮嗷嗷叫小说| 国产亚洲欧洲AⅤ综合一区| 精品国产一区二区AV片| 丰满妇女强高潮ⅩXXX| 小东西好几天没弄了还能吃吗| 亚洲AV无码成人精品区明星换面 | 差差差很疼视频30分钟无掩盖| 欧美黑人男士和白人美女a级黄片视频在线播放 | 成熟交BGMBGMBGM在线| 成人无码区免费AⅤ片WWW软件| 国产精品成人无码久久久| 超清无码熟妇人妻AV在线电影| 动漫精品中文无码卡通动漫| 少妇高潮惨叫喷水正在播放| 久久久久久精品成人网站蜜臀 | 多毛BGMBGMBGM胖在线| 精品国产AⅤ一区二区三区在线看| 国产男女猛烈无遮挡免费网站| 有人有在线观看的片资源| 精品久久久久久无码人妻蜜桃 | 国产精品无码无卡在线观看久| 纯肉无遮挡H肉动漫在线观看网址| 玩弄丰满少妇XXXXX| 国产精品久久久久久久久岛 | 日本适合十八岁以上的护肤品一| 精品日产A一卡2卡三卡4卡乱| 一区三区四区产品乱码| 亚洲大尺度无码专区尤物| 精品国产AⅤ一区二区三区在线看| 办公室扒开奶罩揉吮奶头AV| 国产传媒精品1区2区3区| 民工把我奶头掏出来了怎么办| 小鲜肉洗澡时自慰网站XNXX| 少妇丰满爆乳被呻吟进入| 午夜亚洲国产理论片亚洲2020| 吃奶呻吟打开双腿做受动态图 | 蜜桃av秘 无码一区二区三区| 翘臀后进少妇大白嫩屁股| 免费一对一真人视频| 国产午夜精华无码网站| 国产精品成人一区二区不卡| 亚洲AV无码久久精品蜜桃播放| 首页 动漫 亚洲 欧美 日韩 | 啊灬啊灬啊灬快灬少妇软件 | 久久久久久老熟妇人妻av| 久久天天躁夜夜躁狠狠85| 成人年无码AV片在线观看| 亚洲精品乱码久久久久久按摩| 人妻无码AⅤ中文字幕日韩| 哈昂~哈昂够了太多了男男| 人妻少妇久久中文字幕| 吃奶呻吟打开双腿做受在线视频| 日本丰满熟妇BBXBBXHD| 人人妻人人澡人人爽不卡视频| 激情伊人五月天久久综合| 少妇无码AV无码一区| 国产精品一国产精品一K频道| 亚洲无人区码一码二码三码的特点| 久久久久久精品无码人妻| 日韩精品无码一本二本三本| 亚洲A∨无码无在线观看| 亚洲已满18点击进入在线看片| 国产成人无码A区在线观看视频| 久久久久久亚洲精品无码| 麻豆传播媒体2023最新网站| 欧美极品少妇XXXXⅩ喷水| 日韩不卡手机视频在线观看| 亚洲AV之男人的天堂| 欧美亚洲一区二区三区 | 玩弄丰满少妇XXXXX| 天干天干天啪啪夜爽爽AV| 熟妇五十路六十路息与子| 人妻丰满熟妇AV无码区乱| 免费无码又爽又刺激激情视频 | 扒开双腿疯狂进出爽爽爽免费| 丰满人妻被中出中文字幕| 亚洲 欧美 激情 小说 另类| 免费一对一真人视频| 宝贝你夹得太紧了我都要断了| 日本丰满护士爆乳XXXX无遮挡| 国产精品WWW夜色视频| 日韩精品专区在线影院重磅| 中国老妇XXXX性开放| 全黄H全肉边做边吃奶视频| 宝贝把腿张得大一点就不痛了| 去部队探亲晚上叫太大声| 小S货又想挨C了叫大声点小| 粉嫩少妇内射浓精VIDEOS| 欧美大屁股XXXX高跟欧美黑人| 岳的奶大又白又紧| 丰满人妻一区二区三区无码AV| 欧美人与性动交α欧美精品| 漂亮人妻中文字幕丝袜| 欧洲熟妇色XXXXX老妇| 色欲AV永久无码精品无码蜜桃 | 丰满人妻无码使劲张开双腿AV| 全免费A级毛片免费看视频| 人妻少妇久久久久久97人妻| 日本中文字幕乱码免费| 久久精品日日躁夜夜躁欧美| 欧洲熟妇色XXXXX老妇| 漂亮人妻被中出中文字幕| 国内精品乱码卡一卡2卡三卡新区 国内精品视频一区二区三区八戒 国内偷自第一区二区三区 | 国产男女猛烈无遮挡免费视频网站| 亚洲AV永久无码精品古装片| 人妻少妇久久久久久97人妻| 国语第一次处破女| 一个上面一个下面嘴巴| 日韩精品无码一本二本三本| 无码AV在线一区二区| 精品露脸国产偷人在视频| 成色好的Y31S标准版| 女人大胆张开荫道口∞| 肥臀浪妇太爽了快点再快点| 女人张开腿让男人桶爽的| 在厨房被C到高潮A毛片奶水| 久久66热人妻偷产精品9| 人妻精油按摩BD高清中文字幕| 成人无码区免费∨| 国产成人愉拍免费视频| 哈昂~哈昂够了太多了老师 | 亚洲精品日韩AV专区| 国产免费人成视频在线播放播| 丝瓜秋葵草莓香蕉榴莲绿| 张柏芝跪下吃J8图片| 国产高清在线精品一本大道| 久久久久久亚洲精品无码| 日韩中文无码有码免费视频| 岳又紧又嫩又多水好爽| 小蜜被两老头吸奶头| 色婷婷综合中文久久一本| 欧美精品亚洲日韩AⅤ| 哦┅┅快┅┅用力啊┅┅在线观看| 天天爽夜夜爽人人爽一区二区 | 上面一边亲下一边面膜使用方法| 亚洲AV无码一区二区三区网址 | 狠狠婷婷色五月中文字幕| 国产成人无码A在线观看不卡| 国产精品亚洲VA在线| 无码日韩精品一区二区免费| 欧美free叉叉叉叉极品少妇| 国产精品久久久久久久9999| 中国孕妇变态孕交XXXX| 老熟妇高潮一区二区三区网| 丰满大屁股BWWBWWBWW| 免费无码成人AV在线播| 真人作爱试看90分钟免费影视| 女刑警被两个黑人挺进| 日韩内射美女人妻一区二区三区| 丰满少妇高潮惨叫在线观看| 国产日韩未满十八禁止观看| 脱了老师内裤猛烈进入的软件| 顶级欧美RAPPER| 国产放荡AV剧情演绎麻豆| 国产猛烈高潮尖叫视频免费 | 久久久久久亚洲精品无码 | 国产FREEXXXX性麻豆| 日韩AV高清在线观看| 色欲AV浪潮AV蜜臀AⅤ| 午夜无码一区二区三区在线| 亚洲 熟 图片 小说 乱 妇| 香港经典A毛片免费观看变态| 纯爱无遮挡H肉动漫| 办公室紧身女教师| 性欧美丰满熟妇XXXX性久久久| 我和岳乱妇三级高清电影| 脱岳裙子从后面挺进去| 免费女性裸体啪啪无遮挡网站| 日本欧美大码A在线观看| 精品国产三级A在线观看| 幼儿HIPHOP仙踪林的| 日本黄页网站免费观看| 精品久久久无码人妻中文字幕豆芽| 国产精品无码专区| 人妻少妇精品中文字幕av蜜桃| 狠色狠色狠狠色综合久久| 一个上面一个下面嘴巴| 狠狠色丁香久久综合婷婷| 性色做爰片在线观看WW| 嗯好爽快点插我视频在线播放| 唔嗯啊欧美一级作爱网站| 久久久久久精品成人网站蜜臀| 成熟丰满熟妇强av无码区| 久久久久国产一区二区| 无码人妻精品一区二区三| 黑人巨茎中出人妻| 狠狠躁天天躁无码中文字幕图| 欧美人与ZOZOXXXX视频| 小雪被老汉玩遍各种方式| 草木影视在线视频免费观看| 隔壁人妻被水电工征服| 国产精品色内内在线播放| 国产免费看MV大片的软件| 国产精品亚洲А∨无码播放麻豆| 久久99国产精品久久99软件| 国精产品一区二区三区有限| 久久精品影视免费观看| 国产精品无码免费播放| 城中村快餐嫖老妇对白| 又粗又黄又爽视频免费看| 亚洲AV毛茸茸av成熟女人| 欧美自拍亚洲综合在线| 精品国产AⅤ一区二区三区在线看| 毛片亚洲AV无码精品国产午夜| 国产精品内射后入合集| 无码日韩做暖暖大全免费不卡| 玩弄粉嫩少妇高潮出白浆AⅤ| 久久久久久精品免费不卡| WWW国产精品内射熟女| 任你躁X7X7X7X7在线观看| 国产亚洲精品第一综合麻豆| 无码人妻av一区二区三区毛片 | 高清偷自拍亚洲精品三区| 国产精品成人A区在线观看| 午夜无码伦费影视在线观看果冻 | 播放灌醉水嫩大学生国内精品| 我的少妇邻居全文免费| 成人欧美激情亚洲日韩蜜臀| 久久精品人人做人人综合试看| 午夜福利1000集合集92| 亚洲AV无码一区二区二三区我 | 少妇高潮惨叫喷水在线观看| 中国老太卖婬HD播放| 国产成人亚洲精品| 国产在线无码视频一区二区三区| 美女图片禁欲系高级感| 久久久久亚洲AV无码专区| 强壮公弄得我次次高潮| 女人扒开的小泬高潮喷水小说| 中文国产成人精品久久水蜜桃| 真实国产老熟女粗口对白| 张柏芝阿娇全套无删减1313| 玩弄丰满少妇XXXXX| 妺妺窝人体色WWW聚色窝丿| 国产免费不卡午夜福利在线| 久久寂寞少妇成人内射| 久久精品无码一区二区三区免费| 精品九九人人做人人爱| 亚洲色大成网站WWW永久一区| 国产9 1在线 | 欧洲| 无码午夜人妻一区二区不卡视频| 精品少妇人妻AV无码专区| 西方37大但人文艺术任汾A级 | 男人添女人下部高潮全视频| 国产亚洲成AV人片在线观黄桃| 无码A级毛片视频| 粉嫩粉嫩的18在线免免费观看| 挺进绝色老师的紧窄小肉六视频 | 吃瓜爆料黑料不打烊| 内射白浆一区二区在线观看| 自拍偷自拍亚洲精品10P| 欧洲美女粗暴牲交免费观看| 亚洲AV无码片一区二区三区| 狠色狠色狠狠色综合久久| 欧美xxxxx久久短视频| 色狠狠色狠狠综合天天| 西方37大但人文艺术任汾A级| 国产精品SP调教打屁股| 国产欧美日韩专区发布| 国产精品色内内在线播放| 公和熄洗澡三级中文字幕| 公车掀起老师裙子进入在线 | 成人女人A级毛片免费软件| 狠狠色丁香久久综合| 国产成人精品自在钱拍| 国产男女猛烈无遮挡免费视频网站| 秋霞鲁丝片AⅤ无码入口| 日韩AV片无码一区二区三区不卡| 蜜桃传媒在线观看免费版7| 国产精品爱久久久久久久小说| 成人动漫在线观看| 偷拍区小说区图片区另类呻吟| 强开少妇嫩苞又嫩又紧小说 | 免费无码一区二区三区蜜桃大| 日韩乱码人妻无码中文视频| 韩国三级中文字幕HD| 日韩AV高清无码| 恶毒美人长批后被宿敌爆炒了| 天天天天做夜夜夜夜做无码| 成年黄网站18禁免费观看一区| 无码一区在线视频| 野花在线高清视频| 中文字幕乱码人妻无码久久| 国产 | 欧洲野花视频欧洲1| 欧美亚洲一区二区三区|