Unity 在UGUI上面使用DotweenPath出现路径偏移的问题

1.偏移问题

因为想在ugui上面做一个路径动画,结果编辑好的路径一运行就发生了偏移,情况如下
在这里插入图片描述
出现这种情况有两个必备条件

  1. Canvas的缩放不为 1
    在这里插入图片描述
  2. DotweenPath勾选了Relative
    在这里插入图片描述

2.解决方案

  1. 打开Script Execution Order
    在这里插入图片描述
    然后把Path添加进来,必须要大于0啊,然后在运行发现没有错误!
  2. 那就把 选项去掉
    在这里插入图片描述

3.为什么会出现这种情况

我反编译了一下dotweenpath代码,发现勾选了Relative其实就是在原来位置上增加了一个偏移
在这里插入图片描述
在这里插入图片描述
问题就出在这个Vector3 position = base.transform.positionlastSrcpostion上面.
默认lastSrcpostion=0,但是执行中通过Vector3 position = base.transform.position获取的值是UI RectTransform的anchoredPosition3D,那么此时的lastSrcpostion=RectTransform.anchoredPosition3D,但是dotweenpath中的点位信息都是按照世界坐标来算的,这时候计算的偏移就出现问题了,导致 整个坐标点都偏移了.,下图例子
图片坐标是(100,200),canvas缩放是2.44
然后我写了Test.cs脚本挂在上面
在这里插入图片描述
打印结果:
在这里插入图片描述
可以看到lastSrcPosition得到的是RectTransform.anchoredPosition3D值.所以就导致出现了这种问题.
当Canvas是1的时候不会出现
在这里插入图片描述

题外话

dotween作者并没有考虑将dotweenpath作用于UGUI上面
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/K20132014/article/details/106270360