Bootstrap

Unity 插件 Dotween 对变量的 lock锁

概述:

当用Dotween里面的To等方法对某个变量进行补间动画操作的时候,这个变量在To方法的生命周期之间是被lock锁住的。

也就是说在动画期间,这个变量无法进行额外的赋值操作。

示例:

                tweenHaad = DOTween.To(() => boxTransform_test.Vector2Information, x => boxTransform_test.Vector2Information = x, data.upPerLoop, this.spanTime / 1000f).
                    SetEase(Ease.Linear).
                    SetRelative(true);

boxTransform_test.Vector2Information这个变量已经不能进行赋值操作了。

解决方法:

如果必须对boxTransform_test.Vector2Information进行操作,则可以进行如下操作

                if (tweenHaad != null && tweenHaad.IsPlaying() == true)//如果前面一段动画还在播放,就杀死,进入下一段。
                {
                    tweenHaad.Kill();
                    tweenHaad = null;
                }
  1. tweenHaad.Kill();马上杀死动画,结束这个补间的协程。
  2. 修改boxTransform_test.Vector2Information变量。
  3. 创建新的动画协程tweenHaad = DOTween.To(………………)

思考与讨论:

我认为Dotween创建动画的过程是创建一个新的协程的过程,然后在这个协程里面对某个变量进行补间操作,具体没有研究,如果有懂的道友,可以在下面流言。(〃'▽'〃)

;