[Unity-Studiennotizen] Grundlegende Einführung in DOTween (1)

Fügen Sie hier eine Bildbeschreibung ein

Der Großteil des Inhalts dieses Artikels stammt aus offiziellen Dokumenten von DOTween


Was ist DOTween?

DOTween ist ein Animations-Plug-in und Tween bedeutet Tween. Dieses Plug-in wird im Folgenden als DOT bezeichnet. DOT ist sehr bequem zu verwenden. Sie müssen sich nur vier Klassen und drei Methoden merken:

vier Kategorien

  • Tweener
  • Reihenfolge
  • Zwischen
  • Verschachteltes Tween

drei Methoden

  • TUN
  • Satz
  • An

TUN

Die Methodennamen in DOT sind sehr einheitlich, sodass wir anhand des Präfixes ungefähr erkennen können, was diese Methode tut und wie sie verwendet wird.

  • DO stellt die Methode zum Implementieren einer Animation dar. Es ist das Präfix einer Verknüpfungsmethode zum Aufrufen einer Tween-Animation. Wir können direkt hinter dem Objekt beginnen, auf das wir eine Animation anwenden möchten (z. B. Objekttransformation oder Materialtextur, Text, Text, Farbe, Farbe usw.). usw.) Klicken Sie auf die DO-Methode, bei der Sie die Tween-Animation verwenden möchten:
transform.DOMoveX(100, 1);// 只需在物体的transform后面使用DOMoveX方法,就直接实现了物体在x轴上的移动
transform.DORestart();
DOTween.Play();

Satz

  • Die Methode mit dem Präfix Set wird zum Ändern der Einstellungen eines Tweens verwendet. Normalerweise kann die Set-Methode für Tween und seine abgeleiteten Klassen festgelegt werden. Set kann unendlich nach Tween angehängt werden.
var tweenerA = buttonA.DOMove(new Vector3(700, 200, 0), 5)
.SetLoops(3,LoopType.Yoyo).SetSpeedBased();
myTween.SetLoops(4, LoopType.Yoyo).SetSpeedBased();
// 展示一下无限set
myTween.SetSpeedBased().SetSpeedBased().SetSpeedBased().SetSpeedBased();

An

  • Die Methoden mit dem Präfix „On“ stellen die Rückrufe der Tween-Animation dar, die aufgerufen werden können. Diese Rückrufe werden zu den entsprechenden Zeitpunkten der Tween-Animation ausgelöst und ihre internen Funktionsdelegaten werden aufgerufen.

Offizielles Beispiel:

// 委托回调也可以无限调用
myTween.OnStart(myStartFunction).OnComplete(myCompleteFunction);

Versenden Sie eine einzelne anonyme Funktion

tweener.OnStart(()=> {
    
     Debug.Log("动画开始"); });
// 在Tweener开始时调用委托

Planen der von DOTween bereitgestellten offiziellen Delegationstypen:TweenCallback

TweenCallback tweenCallback = new TweenCallback(() => {
    
     Debug.Log("动画开始"); });
tweenCallback += () => {
    
     Debug.Log("我是TweenCallback委托"); };
tweener.OnStart(tweenCallback);
// tweener动画开始时调度委托
// 输出:动画开始
// 我是TweenCallback委托

Das Gleiche Actiongilt TweenCallbackfür einen Delegierten ohne Rückgabewert, der generische Parameter akzeptiert.


Tweener

  • Tweener- Tweening, eine Klasse zur Steuerung der Tweening-Interpolation und -Animation. Meistens müssen wir die Tweener-Klasse manipulieren:
Tweener tweener;
private void Start()
{
    
    
    tweener = transform.DOMove(new Vector3(500, 500, 0), 5);
    var twe = transform.DOMove(new Vector3(500, 500, 0), 5);
    Debug.Log(tweener.GetType());
    Debug.Log(twe.GetType());
}

Nachdem wir den Code überprüft und den Typ erhalten hatten, stellten wir fest, dass der von der DO-Methode zurückgegebene Typ der Typ TweenerCore ist, der von Tweener erbt. Daher kann Tweener gemäß dem Liskov-Substitutionsprinzip in TweenerCore konvertiert werden.


Reihenfolge

  • Sequenzsequenz , eine spezielle Art von Tweener, der keinen bestimmten Wert steuert, sondern andere Tweens steuert und diese als Sequenz animiert.
private void Start()
{
    
    
    tweener = transform.DOMove(new Vector3(500, 500, 0), 5);
    var tweenerA = buttonA.DOMove(new Vector3(700, 200, 0), 5);
    var seq = DOTween.Sequence();
    seq.Append(tweener);
    seq.Append(tweenerA);
}

Ähnlich wie bei der Delegation kann Sequence Tween-Animationen nacheinander ausführen und natürlich auch die geplante Ausführung zu einem bestimmten Zeitpunkt festlegen.

var s = DOTween.Sequence();
var Cube1RunTime = 1.0f;
var Cube2RunTime = 1.0f;
s.Append(this.m_Trans.DOLocalMoveX(2.0f, Cube1RunTime));
s.Append(this.m_Trans.DOLocalMoveX(-3.42f, Cube1RunTime));
//在队列动画开始后的Cube1RunTime秒后播放
s.Insert(Cube1RunTime, this.m_Other.DOLocalMoveY(2.5f, Cube2RunTime));

Zukünftig werden auch spezifische Nutzungen eingeführt.


Zwischen

  • Tween , der Sammelbegriff für Tweener und Sequence. Aus Codesicht ist es die Basisklasse von Tweener und Sequence und auch die grundlegendste Klasse des DOTween-Plug-Ins.

Verschachteltes Tween

  • Verschachtelte Tweens Verschachtelte Tweens, Tweens, die in der Sequenz enthalten sind. Sie können es nicht im Code sehen, es sollte ein Alias ​​von Tween innerhalb von Sequence sein.

Initialisierung

Bevor Sie DOTween verwenden, müssen Sie es initialisieren. Der einfachste Weg, es zu initialisieren, besteht darin, dies nach dem Import zu tun, wie in der folgenden Abbildung gezeigt: Natürlich können Sie
Fügen Sie hier eine Bildbeschreibung ein
auch Code verwenden, um die Standardinitialisierung durchzuführen, und die offizielle Empfehlung lautet: if Wenn Sie die Initialisierung selbst festlegen möchten, können Sie den folgenden Code verwenden

// EXAMPLE A: initialize with the preferences set in DOTween's Utility Panel
// 默认使用推荐配置初始化
DOTween.Init();
// EXAMPLE B: initialize with custom settings, and set capacities immediately
// 自定义设定初始化
DOTween.Init(true, true, LogBehaviour.Verbose).SetCapacity(200, 10);

// recycleAllByDefault: true自动回收,如果Tween被OnKill时不是销毁而会被回收到池中,不允许GC对他们销毁,而有可能被再次调用重生
// useSafeMode: true安全模式,补间有可能变慢,但换来的是更安全的操作
// LogBehaviour: 日志行为,根据选择模式设置日志
public static IDOTweenInit Init(bool? recycleAllByDefault = null, bool? useSafeMode = null, LogBehaviour? logBehaviour = null);

Verwendung

Bei der Verwendung von Tween gibt es zwei Aufrufmethoden. Eine davon ist die von uns eingeführte DOPräfixmethode . Diese Methode ist ein schneller Aufruf der vollständigen Methode. Sie kann direkt nach dem aufrufenden Objekt festgelegt werden, und es ist nicht erforderlich, einen aufrufenden Delegaten anzugeben:

transform.DOMove(new Vector3(2,3,4), 1);
rigidbody.DOMove(new Vector3(2,3,4), 1);
material.DOColor(Color.green, 1);

Mithilfe von DOMethoden können wir zusätzlich zum Tweening vom Anfangswert zum eingestellten Wert, wenn wir From()eine Methode hinzufügen, auch vom eingestellten Wert zum Anfangswert tweenen:

transform.DOMove(new Vector3(2,3,4), 1).From();
rigidbody.DOMove(new Vector3(2,3,4), 1).From();
material.DOColor(Color.green, 1).From();

Zusätzlich zur Shortcut-Methode gibt es auch eine vollständige Methode:

// 使用静态方法定义一个Tween
// 四个参数分别是getter,setter,to,duration
// getter,setter是泛型委托,它们并不支持所有的泛型,定义里只定义了一部分的类型
// getter委托用于接受初始值的类型
// setter委托用于接受初始值并作为入参
// to参数代表了最终值
// duration参数代表了从初始值补间到最终值的时间
// Tween a Vector3 called myVector to 3,4,8 in 1 second
DOTween.To(()=> myVector, x=> myVector = x, new Vector3(3,4,8), 1);
// Tween a float called myFloat to 52 in 1 second
DOTween.To(()=> myFloat, x=> myFloat = x, 52, 1);

Die Methode DOTween.TO() wendet Tweening nicht direkt an, sondern weist den Daten des akzeptierten Typs Tweening im Zeitverlauf vom Anfangswert bis zum Endwert zu. Zum Beispiel:

Vector3 transform= Vector3.zero;
DOTween.To(()=> transform, x=> transform= x, new Vector3(3,4,8), 1);

Dann ändert sich innerhalb einer Sekunde die Transformation (0,0,0)von zu (3,4,8), aber da es keine festgelegte Objekttransformation gibt, bewegt sich das Objekt selbst nicht.


Das Obige sind einige grundlegende Verwendungszwecke von DOTween. Ich glaube, Sie werden wissen, was sie bedeuten, wenn Sie den Funktionsnamen sehen. DOTween bietet viele Tweening-Methoden. Die erweiterte Verwendung ist sehr leistungsstark. Es kann sogar mit AVpro verbunden werden: Auszug aus Unity
DOTween . Zu
Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/milu_ELK/article/details/132474063
Empfohlen
Rangfolge