我正在改变按钮的位置(X和Y)。
我用transform.position
devButton.transform.position = new Vector2(780, 620)
但是设置x = 780和y = 620,它将其设置为-500和-100。当我删除该行时,它不会影响按钮位置,所以我知道它没有从其他任何地方获得该值。
评论中的屏幕截图
好的,我有一些线索。它正在获取Canvas的位置(目前是1280,720),然后从我设置的矢量计算它的Canvas X - X.同样的Y和我也不知道为什么会这样做。
答案 0 :(得分:1)
我设法做到了,这是解决方案:
首先,我发现由于某种原因,当我改变位置时,它出于某种原因通过Canvas当前posX和posY减去我的X和Y值,所以当我想改变位置时我将canvas posX添加到我的X和画布posY到我的Y.所以它就像这样
GameObject canvas;
float canvasPosX;
float canvasPosY;
private void Awake()
{
canvas = GameObject.Find("Canvas");
canvasPosX = canvas.transform.position.x;
canvasPosY = canvas.transform.position.y;
gameobject.transform.position = new Vector2(myX + canvasPosX, myY + canvasPosY)
}
我仍然不知道为什么帆布位置与按钮位置有任何联系,但我发现这对我有用:)
答案 1 :(得分:0)
如果您尝试使用NGUI系统设置 UI 元素的位置,那不幸的是,它并不容易。
首先,您必须使用RectTransform
组件而不是传统的Transform
。
然后,您必须指明元素是否具有任何拉伸行为。当anchorMin和anchorMax属性不相同时,会发生拉伸行为。
对于非拉伸矩形变换,通过设置anchoredPosition和sizeDelta属性可以最轻松地设置位置。 anchoredPosition指定枢轴相对于锚点的位置。 sizeDelta与没有伸展时的大小相同。
对于拉伸Rect变换,使用offsetMin和offsetMax属性设置位置可能更简单。 offsetMin属性指定rect的左下角相对于左下锚点的角。 offsetMax属性指定rect的右上角相对于右上角锚点的角落。
来源:https://docs.unity3d.com/Manual/HOWTO-UICreateFromScripting.html
关于您给出的值与设置的值之间的差异,肯定是因为锚点没有按照您的预期定位。但没有任何进一步的信息,没有人能够帮助你。