UI坐标变换/转换

前端之家收集整理的这篇文章主要介绍了UI坐标变换/转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

InverseTransformPoint

Transform.InverseTransformPoint :相对于谁的坐标。如果是相对2D UI,请使用localposition,如果是3D场景,请使用position

文档

http://www.ceeger.com/Script/Transform/Transform.InverseTransformPoint.html

 

UI结构

image

image

UIRoot/PanelRoot/Center/Battle/BuffsOnHero/BuffIconTemplate  (这是buff图标)

UIRoot/PanelRoot/Center/Battle/BuffDetail  (这是buff详细信息窗口)

 

UI坐标变换需求

BuffDetail的坐标和BuffIconTemplate顶对齐,就是按住不同的图标,弹出窗口的Y和图标的Y相同。

image

 

思路分析

BuffDetail  和BuffIconTemplate  的父节点,同级(这一点很重要)

1、获得BuffIconTemplate的UI坐标的Y设置成BuffDetail的Y

涉及到UI坐标的转换。

 

实现方法

//获取图标相对于父节点的UI坐标
var
localPos = transform.InverseTransformPoint(BuffIconTemplate.transform.position); //窗体和Buff图标的坐标顶对齐,和buffTable的右侧有一个offset var offX = localPos.x - BuffWinBg.width * 0.5f - 70;
BuffDetailWindow.localPosition = new Vector3(offX,localPos.y,localPos.z);

解释:Transform.InverseTransformPoint 相当于把buffIconTemplate从父节点拉出来,获取它在UI上的localposition,如下图所示

image

 

附加资料

UICamera下的gameobject 使用localpostion

SceneCamera下的gameobject 使用wordpostion

猜你在找的Unity相关文章