2016-11-21 55 views
0

我正在改变我的按钮(X和Y)的位置。变换位置向量使用一些随机值

更改与transform.position

devButton.transform.position = new Vector2(780, 620) 

而是设置X = 780和y = 620它并将其设置为-500和-100位置。当我删除该行时,它不会影响按钮的位置,所以我知道它没有从其他地方获得该值。

评论界面截图

好的,我有一些线索。它正在获取Canvas的位置(当前为1280,720),然后从矢量i中设置Canvas X-X来计算它。 Y也一样,我不知道它为什么这样做。

+0

你确定它的localPosition不是-500,-100? –

+0

localPosition是什么意思? – Parpil

+0

转换有两个属性,它的位置和它的localPosition - 如果它是一个对象的孩子,你可能会偶然看到localPosition属性 –

回答

1

我设法做到这一点,这里是解决方案:

首先,我发现,由于某些原因,当我改变位置,由于某种原因被帆布当前POSX和波西减去我的X和Y值,所以当我想改变我的位置帆布POSX添加到我的X和帆布波西我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

我建议阅读脚本手册。一旦理解了'transform.position'和'transform.localPosition'之间的区别,“为什么画布位置与按钮位置有任何联系”的原因应该变得更加清晰。 – rutter

0

如果您尝试使用NGUI系统设置元素的位置,那么不幸的是,这并不那么容易。

首先,您必须使用RectTransform组件代替传统Transform

然后,您必须指出元素是否有任何拉伸行为。当anchorMin和anchorMax属性不相同时会出现拉伸行为。

对于非拉伸Rect变换,通过设置anchoredPosition和sizeDelta属性,最容易设置位置。 anchoredPosition指定枢轴相对于锚点的位置。 sizeDelta与没有拉伸时的大小相同。

对于拉伸矩形变换,使用offsetMin和offsetMax属性可以更简单地设置位置。 offsetMin属性指定相对于左下角锚点的矩形的左下角的拐角。 offsetMax属性指定相对于右上角锚点的矩形右上角的拐角。

来源:https://docs.unity3d.com/Manual/HOWTO-UICreateFromScripting.html

关于你给的值,并设定值之间的差异,这是肯定因为您所期望的锚没有被定位。但没有任何进一步的信息,没有人能够帮助你。

+0

你在这个问题上看到NGUI的位置? – Programmer

+0

海报会谈到“按钮”,并且值大,我认为海报试图在Canvas上放置一个按钮。并且,仔细阅读我的答案:“**如果**您尝试使用NGUI设置UI元素的位置” – Hellium

+0

是的,它是画布。 – Parpil