1.UI坐标转换到其他UI坐标
经测试可以兼容Canvas的Camera/World两种RenderMode 在不同canvas下也可以坐标转换,但是中间有Scale变换和Pivot变换时结果还是不对
/// <summary>
/// UI坐标转换到其他UI下 Canvas兼容camera/world mode , 跨Canvas转换 暂不支持Scale和Pivot变换
/// </summary>
/// <param name="targetRect">目标的rect</param>
/// <param name="changedRect">转换的rect</param>
public void UIPosTransform2OtherUI(RectTransform targetRect, RectTransform changedRect, RectTransform canvas)
{
Vector2 targetScreenPos = RectTransformUtility.WorldToScreenPoint(Camera, targetRect.position);
Vector2 targetCanvasPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, targetScreenPos, Camera, out targetCanvasPos);
Vector2 changedScreenPos = RectTransformUtility.WorldToScreenPoint(Camera, changedRect.position);
Vector2 changedCanvasPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, changedScreenPos, Camera, out changedCanvasPos);
changedRect.localPosition = targetCanvasPos - changedCanvasPos + changedRect.anchoredPosition;
}