Transform.SetParent不起作用?

时间:2015-03-17 09:27:33

标签: c# unity3d transform

我试图在实例化后将对象作为另一个对象的子对象,但似乎没有做到,(你会发现我的论文作为注释代码)

 void Update()
 {  
        if (!isCreated)
        {
                if ( GameObject.Find("blue").GetComponent<Rigidbody2D>().velocity.magnitude == 0 
                &&(Time.time >1))
            {
                Instantiate (indice, new Vector3 (gameObject.transform.localPosition.x + 0.5f ,
                                                  gameObject.transform.localPosition.y + 2,
                                                  gameObject.transform.localPosition.z ),
                                 Quaternion.identity);
                Debug.Log (this.GetComponent<Item>().name.ToString());
                //indice.SetActive(false);
                //indice.transform.SetParent(this.GetComponent<Item>().transform, true);
                indice.transform.SetParent(GameObject.Find(this.name.ToString()).transform, false);
                //indice.transform.parent = gameObject.transform;
                //indice.name = this.transform.name.ToString()+"ItemIndice";
//              GameObject.Find(indice.name).SetActive(false);
                isCreated=true;
                gameObject.GetComponent<Rigidbody2D>().isKinematic = true;
                gameObject.GetComponent<Collider2D>().isTrigger = true;
            } 

        }
    }

1 个答案:

答案 0 :(得分:4)

您实例化新对象但不分配它。您可以从here检查Instantiate

 Instantiate (indice, new Vector3 (gameObject.transform.localPosition.x + 0.5f ,
                                       gameObject.transform.localPosition.y + 2,
                                       gameObject.transform.localPosition.z ),
                                       Quaternion.identity);

所以你可以使用这个

GameObject newIndice = Instantiate (indice, new Vector3 (gameObject.transform.localPosition.x + 0.5f ,
                                            gameObject.transform.localPosition.y + 2,
                                            gameObject.transform.localPosition.z ),
                                            Quaternion.identity) as GameObject;

然后,您可以将父对象设置为newIndice。像

newIndice.transform.parent = gameObject.transform;