ugui的anchoredPosition和 localPosition和position

Transform有position和localPosition属性,这两个分别代表在世界空间的绝对位置和相对于父级物体的相对位置。

RectTransform引入了anchoredPosition和anchoredPosition3D,它们都是相对位置,但是相对的是自身的Anchor。

  • recttransform的inspector中显示的是anchoredPosition
  • transform的inspector中显示的是localPosition
  • anchoredPosition只有当anchormin和anchormax等于parent的pivot的时候才等于localPosition
  • 所以设置ui的坐标尽量设置他的anchoredPosition

RectTransformUtility是原生的RectTransform工具,它提供了多个静态函数来对RectTransform进行操作,如坐标转换、范围测试等等。这里不再展开了。

某些时候需要在运行的时候动态修改UGUI动态修改 RectTransform 的Left,Top,Right和Bottom值,Unity提供了两个值。

scrollContent.GetComponent<RectTransform>().offsetMin = new Vector2(0.0f, 0.0f);
scrollContent.GetComponent<RectTransform>().offsetMax = new Vector2(0.0f, 0.0f);

offsetMin : 对应Left、Top 
offsetMax : 对应Right、Bottom 

sizeDelta,“The size of this RectTransform relative to the distances between the anchors.”写得多直白(吐槽下,官方的英文文档是啥级别的资料组维护的,专业坑爹三十年么!!!)。这里阐述下,这个属性表示的就是offsetMax-offsetMin得到的向量,即图元从左下角指向右上角得到的向量。当然如果用的是相对布局的话,这个向量看起来会非常诡异。所以,这个变量就别用了,属于坑爹API。

发表评论