我有一个GameObject.Instantiate()
方法可以创建一个Page
游戏对象。然后Page
游戏对象有一个Start()
方法,它还会实例化一些新的游戏对象。
我的问题是在Start()
方法中创建的游戏对象会被创建两次。首先它被创建为Page
游戏对象的孩子(我想要的,这是正确的),但它也会在场景的根目录中创建相同的游戏对象。
我已尝试将Debug.Log("Calling start method...")
添加到Start()
以查看该方法是否被调用两次,但似乎并非如此。 不将文本输出两次到日志。
void navigateTo(Page page) {
...
// Here we instantiate the Page.
this.currentPage = GameObject.Instantiate (page.gameObject, this.content.transform).GetComponent<Page>();
}
void Start () {
// Here we create a child GameObject. This get's created both as a child of
// the Page game object, but also in the root of the scene.
GameObject tableGO = new GameObject ("Table");
GameObject instance = GameObject.Instantiate(tableGO, this.gameObject.transform) as GameObject;
...
}
答案 0 :(得分:0)
问题是new GameObject ("Table")
创建了一个没有父级的游戏对象,GameObject.Instantiate(tableGO, this.gameObject.transform) as GameObject;
也创建了一个游戏对象,但在第二种情况下,你使用第一个游戏对象作为模板(或者像预制件)并设置了一个它的父母。因此,您可以删除GameObject tableGO = new GameObject ("Table");
并使用预制来创建游戏对象或移除第二行并将tableGO.transform.parent
设置为您需要的任何内容。