【问题标题】:Transform.SetParent won't work?Transform.SetParent 不起作用?
【发布时间】:2015-03-17 09:27:33
【问题描述】:

我试图在实例化后将一个对象作为另一个对象的孩子,但似乎没有任何效果,(你会发现我的文章是注释代码)

 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;
            } 

        }
    }

【问题讨论】:

    标签: c# unity3d transform


    【解决方案1】:

    您实例化了新对象但没有分配它。你可以从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;
    

    【讨论】:

    • 这就是我所做但没有工作的 :) 我改变了主意,我以另一种方式做了它并且它正在工作:当我为每个实例指定一个新对象时,我有可能分开处理每个项目,这让我可以将它们设置为 false 或 true,因为我希望谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多