Unity如何在Grid Layout Group中获取子元素的位置



我有一个带有Grid Layout Group组件的gameObject(GameGrid),它的父元素是一个带有Vertical Layout Group的gameObject(GameBox),它的父元素是一个Canvas (MainCanvas)。

  • GameGrid= Grid Layout Group
  • GameBox= Vertical Layout Group
  • MainCanvas= Canvas

我有另一个gameObject(Item(0/1/2)),它的父对象是(keyboard1)与Grid Layout Group,它的父对象是一个gameObject(Keyboard)与Canvas。

  • keyboard1= Grid Layout Group
  • 键盘=帆布文本

我有一个拖放脚本,可以让我拖动Item(0/1/2)GameGrid的孩子之一,然后改变Item的位置到孩子的位置:(脚本是在GameGrid孩子)eventData.pointerDrag.GetComponent<RectTransform>().position = GetComponent<RectTransform>().position;(这工作良好)

但是当我需要从其他脚本中获取子元素的位置时,我似乎无法将Item移动到正确的位置。它给我小坐标和大坐标。

为什么这个工作:eventData.pointerDrag.GetComponent<RectTransform>().position = GetComponent<RectTransform>().position;而不是Item.GetComponent<RectTransform>().position = child.GetComponent<RectTransform>().position;?

我已经尝试了我在论坛上找到的所有解决方案,但似乎没有一个适合我。

我是否错误地访问了位置或者我是否错误地设置了位置?两个?

我也遇到过同样的问题,但是还不能完全解决。

根据其他论坛,我注意到,如果您立即调用该方法,通过初始化函数通过Childs within ParentsGetComponent(应用Vertical or Horizontal Layout Groups组件)获得位置,那将是他们父母的位置或未知的位置。

在我看来,你应该用简单的Timer-Methods(错误动作&不准确的方法)或使用late-initialization function(s)(我没有找到任何…)之后,整个脚本被正确加载。

相关内容

  • 没有找到相关文章

最新更新