用孩子

时间:2016-09-25 14:43:19

标签: c# unity3d unity5

我有一个GameObject(EnemyProducer)实例化另一个GameObject(EnemyFormation),它有几个孩子(真正的敌人)。

然而,当我实例化EnemyFormation Gameobject时,它没有任何孩子!

EnemyFormation是预装了所有必需的孩子。

这就是它的样子:

enter image description here

以下是实例化EnemyFormation的EnemyProducer代码:

public class EnemyProducer : MonoBehaviour {
    EnemyFormation enemyGroup;
    Transform enemyFormationTransform;
    public float speed;
    float boundary, currentY;
    bool goingDown = true;
    public GameObject enemyFormation;

    // Use this for initialization
    void Start () {
       // Create enemyformation
       enemyFormation = Instantiate (enemyFormation);
       enemyFormation.transform.parent = transform;
       enemyGroup = enemyFormation.GetComponent<EnemyFormation>();
       boundary = Camera.main.orthographicSize;
       enemyFormationTransform = enemyFormation.transform;
    }
    void Update () {

        // if all enemies are killed, create a new one
        if (!enemyGroup.hasEnemy ()) {
            enemyFormation = Instantiate (enemyFormation);
            enemyFormation.transform.parent = transform;
            enemyGroup = enemyFormation.GetComponent<EnemyFormation>();
            enemyFormationTransform = enemyGroup.gameObject.transform;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

第一个实例化可能是成功的,因为它从编辑器克隆了预制件,但随后您将新克隆的预制件重新分配给enemyFormation。当所有敌人(儿童)被摧毁(假设您使用Destroy())时,enemyFormation将不包含任何儿童。下次你Instantiate(enemyFormation)时,你应该得到一个没有孩子的gameObject,因为它不再是编辑的预制件(它已被你重新分配)。

抱歉,我必须删除之前的答案。无论如何,这是错误的。