我有一个产卵器游戏对象,它产生两个不同的预制板。我试图使这个衍生的对象,产卵者的孩子,游戏对象,但它不工作。
这是我的尝试(此代码在spawner游戏对象中):
void Update () {
    if (Time.time > nextSpawn)
    {
        whatToSpawn = Random.Range(1, 3);
        Debug.Log(whatToSpawn);
        switch(whatToSpawn) {
        case 1:
                Instantiate(cube, transform.position, Quaternion.identity);
                cube.transform.parent = transform;
                break;
        case 2:
            Instantiate(circle, transform.position, Quaternion.identity);
            circle.transform.parent = transform;
            break;
        }
        nextSpawn = Time.time + spawnRate;
    }
}这给我带来了一个错误:
setting the parent of a transform which resides in a prefab is disabled发布于 2018-09-14 19:17:23
问题是,您正在尝试设置多维数据集和圆圈预制板的父级,而不是实例化的实际多维数据集和圆圈对象。将开关语句替换为以下语句:
switch(whatToSpawn)
{
    case 1:
        GameObject myCube = (GameObject)Instantiate(cube, transform.position, Quaternion.identity);
        myCube.transform.parent = transform;
        break;
    case 2:
        GameObject myCircle = (GameObject)Instantiate(circle, transform.position, Quaternion.identity);
        myCircle.transform.parent = transform;
        break;
}将Instantiate函数转换为(GameObject)将返回对您刚才实例化的对象的引用。
Note:正如Draco18s所提到的,直接与父节点一起重载Instantiate更有效,如下所示:
switch(whatToSpawn)
{
    case 1:
        Instantiate(cube, transform.position, Quaternion.identity, transform);
        break;
    case 2:
        Instantiate(circle, transform.position, Quaternion.identity, transform);
        break;
}https://stackoverflow.com/questions/52337973
复制相似问题