我正在创建一个库存系统,您可以在其中将物品拖放到插槽中。我的问题是,当我将物品放入插槽时,它无法正确对齐。
我尝试使用transform.localposition正确设置它,但是它绝对没有改变,它们仍然未对齐。
public void OnDrop(PointerEventData eventData)
{
//If there's nothing already in this slot
if(!item)
{
DragNDropController.itemBeingDragged.transform.SetParent(transform);
DragNDropController.itemBeingDragged.transform.position = this.transform.position;
}
}
结果是:https://i.imgur.com/iosqVAT.png 请注意X / Y位置如何为-12.5 / 12.5。如果我在Rect Transform中将其更改为0/0,则所有内容都将完美对齐,但是我似乎无法使用代码来做到这一点。
答案 0 :(得分:0)
您可能正在尝试设置变形的本地位置,而应该获取RectTransform并设置其本地位置。
代码:
RectTransform myRectTransform = GetComponent<RectTransform>();
myRectTransform.localPosition += Vector3.zero;
myRectTransform.anchoredPosition += Vector3.zero;
答案 1 :(得分:0)
将变换设置为另一个变换时。 子位置不再代表自己的位置,让我们说它是所有父位置加上本地位置的总和。
因此,您将其作为位置= 5,5,5的变换的子级。 但随后您将它的位置与它的父级保持相同,即5,5,5。 现在其总排名为10、10、10。
您需要将其localPosition设置为0,0,0,因此其位置是其父位置,并且无论槽位在何处,都将该项移到该位置。
因此,为了将其正确放置在插槽的中央,您的代码应为:
DragNDropController.itemBeingDragged.transform.SetParent(transform);
DragNDropController.itemBeingDragged.transform.localPosition = Vector3.zero;