Unity:代码中的预制育儿
Unity: Prefab parenting in code
假设我想要多个名为 childTile
的预制对象,它作为另一个名为 parentTile
的预制对象的父级。因此,每当 parentTile
旋转时,childTiles
将围绕 parentTile
旋转。
基本上我是这样写的:
public GameObject childPrefab;
public GameObject parentPrefab;
void Update()
{
for(int i = 0; i < 10; i++)
{
GameObject clone = Instantiate(childPrefab, /*PsuedoCode: random position*/ , Quaternion.identity)
clone.transform.parent = parentPrefab;
}
}
预期的结果是在运行时,如果我在现场旋转parentPrefab
,那么10childPrefabs
也应该旋转。我尝试了很多方法但都失败了,除非我手动将 childPrefabs
拖到 Hierachy 栏上的 parentPrefab
。
您确定要在每帧上Instantiate
10 个子预制件(Update
每帧调用一次)。
我认为你的问题是,你没有 Instantiate
父级预制件。
如果我接受你的代码并修复它,它对我来说就像一个魅力。
public GameObject childPrefab;
public GameObject parentPrefab;
void Start()
{
GameObject parent = Instantiate(parentPrefab) as GameObject;
for(int i = 0; i < 10; i++)
{
GameObject child = Instantiate(childPrefab) as GameObject;
child.transform.parent = parent.transform;
}
}
这是上面代码的结果,我怀疑,这就是你想要的?
假设我想要多个名为 childTile
的预制对象,它作为另一个名为 parentTile
的预制对象的父级。因此,每当 parentTile
旋转时,childTiles
将围绕 parentTile
旋转。
基本上我是这样写的:
public GameObject childPrefab;
public GameObject parentPrefab;
void Update()
{
for(int i = 0; i < 10; i++)
{
GameObject clone = Instantiate(childPrefab, /*PsuedoCode: random position*/ , Quaternion.identity)
clone.transform.parent = parentPrefab;
}
}
预期的结果是在运行时,如果我在现场旋转parentPrefab
,那么10childPrefabs
也应该旋转。我尝试了很多方法但都失败了,除非我手动将 childPrefabs
拖到 Hierachy 栏上的 parentPrefab
。
您确定要在每帧上Instantiate
10 个子预制件(Update
每帧调用一次)。
我认为你的问题是,你没有 Instantiate
父级预制件。
如果我接受你的代码并修复它,它对我来说就像一个魅力。
public GameObject childPrefab;
public GameObject parentPrefab;
void Start()
{
GameObject parent = Instantiate(parentPrefab) as GameObject;
for(int i = 0; i < 10; i++)
{
GameObject child = Instantiate(childPrefab) as GameObject;
child.transform.parent = parent.transform;
}
}
这是上面代码的结果,我怀疑,这就是你想要的?