Gameobject位置无法跟随父位置Unity

时间:2017-02-24 12:27:49

标签: c# unity3d

当孩子的位置设置为父位置时,我遇到了问题。

屏幕截图下方:

enter image description here

我的剧本:

RightNext.transform.GetChild (0).gameObject.transform.SetParent (TemporaryPage.transform,false); // TemporaryPage = Cherry Cake

RightNext.transform.GetChild (0).GetComponent<RectTransform> ().localScale = new Vector3 (1, 1, 1);
            RightNext.transform.GetChild (0).gameObject.transform.parent = RightNext.transform;
            RightNext.transform.GetChild (0).transform.position = RightNext.transform.position;

我把它放在更新中以确保位置没有改变。

为什么我的孩子的位置不在父母的内部和相同的位置,即使我已将其设置为与父母相同的位置?

由于

丹尼斯

1 个答案:

答案 0 :(得分:0)

您需要更改此行:

RightNext.transform.GetChild (0).transform.position = RightNext.transform.position;

到此:

RightNext.transform.GetChild(0).GetComponent<RectTransform>().localPosition = Vector2.zero;

或者这个:

RightNext.transform.GetChild(0).GetComponent<RectTransform>().position = RightNext.transform.GetComponent<RectTransform>().position;

评论后编辑:我建议的两条线用于使子枢轴点与父枢轴点重合,我认为你想要这一点而不是总是将子对象枢轴放在父对象的中心它的支点。

使用您建议的行(您可以使用2D版本,因为我们正在处理UI):

RightNext.transform.GetChild(0).GetComponent<RectTransform>().anchoredPosition = Vector2.zero;

您将子枢轴放在父对象的中心,因此您需要将子枢轴设置为(0.5,0.5)。

但是,我强烈建议在Start方法中(或在实例化一个新子节点之后)引用父和子的RectTransform,以避免在Update中不断使用GetComponent方法,因为它是&#39; sa慢的方法。