在父母的位置实例化预制件

时间:2017-10-27 11:10:14

标签: c# unity3d parent-child

我试图将预制件实例化为一个孩子,我希望它的位置与它的父级完全相同。不知何故,预制件没有在完全相同的位置实例化。

父母也是另一个对象的孩子。为清楚起见:

Object Structure

“可选择(克隆)”是实例化的预制件。我希望这个职位与“Lader”职位相同。

我的代码:

        Vector3 position = new Vector3(0, 0, 0);

        GameObject obj = Instantiate(prefab);
        obj.transform.parent = parent.transform;
        obj.transform.localPosition = position;

有人可以帮我吗?提前谢谢!

5 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西。确保子枢轴和父枢轴都居中。

GameObject obj = Instantiate(prefab);
obj.transform.SetParent(parent, false);

答案 1 :(得分:0)

也许你可以尝试这样的事情:

First Responder

答案 2 :(得分:0)

在这里,你没有指定新的GameObject是任何东西的孩子,所以一定要这样做。

public GameObject parentLadder;
public GameObject prefab

接下来,不要调用变量位置,因为它已经是一个统一的全局。

Vector3 pos = (0,0,0)

然后实际实例化我们的对象并将其设置为父变换。

GameObject obj = Instantiate(prefab, transform.position, transform.rotation) as GameObject;
    obj.transform.position = parentLadder.transform.position;
    obj.transform.localPosition = pos;

答案 3 :(得分:0)

您在设置父级之前是否尝试设置位置?

    Vector3 position = new Vector3(0, 0, 0);
    GameObject obj = Instantiate(prefab);
    obj.transform.Position = parent.transform.position;
    obj.transform.parent = parent.transform;

答案 4 :(得分:0)

您可以使用Instantiate()实例化直接子转换的对象

尝试:

Instantiate(GameObeject, transformPosition, Quaternion.identity, transformParent);

示例:

Instantiate(popUpMsg, Canvas.transform.position, Quaternion.identity, Canvas.transform);

现在PopUp GameObject是Canvas的孩子