我有一个带有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 Parents
的GetComponent
(应用Vertical or Horizontal Layout Groups
组件)获得位置,那将是他们父母的位置或未知的位置。
在我看来,你应该用简单的Timer-Methods
(错误动作&不准确的方法)或使用late-initialization function(s)
(我没有找到任何…)之后,整个脚本被正确加载。